|
【已解决】0被识别为NULL了,,该怎么解决?
[复制链接]
本帖最后由 Tobey 于 2016-10-16 17:27 编辑
为了节省内存占用量,多个调用函数的参数都是指针地址,并添加了空指针判断,
结果在调用PID函数后,我对输出结果进行判定是否为空,若为空则返回,代码如下:
- PIDout = PID_PidRun(Pid);//获取PID增量模式下的输出结果
-
- if(NULL == PIDout){
- DEBUG_PRINT("channel %d, PIDout is %s\n",Channel+1, "NULL");
- return;
- }
复制代码 结果发现串口助手中显示所有通道输出结果均为NULL,,,,在将空指针判定
的返回值修改为0后依然如此,修改为其它数值仍然显示为NULL,,,检查后发
现,我在PID_PidRun(*Pid)中有段对通道状态进行判断的语句,以此决定后续操作,
当通道状态为关闭(0)时直接返回0,将该段语句的返回值0修改为1时串口助手中
就不再打印NULL信息了,,,代码如下:
- // 判断通道PID控制是否启用
- if( 0 == (* Pid).Channel_Switch)
- {
- return 0;
- }
复制代码 因此,NULL的产生原因是因为这里NULL和0是同一个东西,,,
NULL不是专门用于指示指针为空吗?好多地方的空指针检测都是返回NULL,,
而且程序中0还是有用的返回值,,,这该怎么解决?
|
|