c中return的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:52:55
ErrCode=STLAYER_SetLayerParams(CURSOR_LAYER_Handle[0],&LAYER_LayerParams);
if (ErrCode!=ST_NO_ERROR)
{
return(ErrCode);
}STLAYER_SetLayerParams程序中ErrorCode = ST_ERROR_BAD_PARAMETER;或者ErrorCode = STLAYER_Ioctl_SetLayerParams.ErrorCode;而初始化时这个值为ErrorCode = ST_NO_ERROR;但是在后面的话无论是什么情况errorcode都是有值的,有蚨errorcode是0,我无论是等于或不等于ST_NO_ERROR,我在里面加了打印都打印不出来,是什么原因造成的呢?
我单步跑了,明明编译进去了,可是就是不执行,每次都跳过去了,说明等于不成立,那我把改成不等于了,还是跳过去执行,可上面却显示编译进去了,请高手指教!调试时我看到ercode的值为0,可是我不明白为什么我把if (ErrCode=0)
{ print("STATAPI - Driver version : %s \n",3);
return(ErrCode); 然后执行,但打印不出来

if (ErrCode=0)
应该改为
if (ErrCode==0)

如果是if (ErrCode=0) ,那么ErrCode=0是一个赋值语句,
赋值语句的返回值等于所赋的值,
所以这一句的返回结果永远为0,if判断恒不成立。

if(ErrCode=0) 应该为 if(ErrCode==0)

ErrCode=0是个赋值语句。。。
ErrCode=0整个表达式返回ErrCode的值,暨被赋值为0了的ErrCode,当然被判断为假了

return(ErrCode); 在 main() 里还是在自定义函数里?

int main() 里, return 到 系统。

自定义函数里,自定义 函数类型要与 ErrCode 类型 相同。

if (ErrCode=0) {。。。。};
ErrCode=0 是赋值语句,所以后面的{。。。。} 无条件 执行,不会跳过,要跳要在 if 以前跳,执行到达if ,就必定 执行 {。。。。}

print("STATAPI - Driver version : %s \n",3);
改成 print("STATAPI - Driver version : 3 \n"); 再试。

编译时,不要用优化。