得到警告

时间:2014-03-01 10:34:08

标签: c embedded

我在嵌入式c(在Kiel4中)中编写代码,将缓冲区AtRes中的String与C003进行比较,并将其分配给uc EVENTbuf,如

else if(ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4))

现在我收到警告

assignment in condition 

如何克服这种警告。 谢谢

3 个答案:

答案 0 :(得分:4)

你的编译器解释if statemente如下:

if( ucEVENTBuf=1 ) // or whatever

这是一个分配。正如其他人所说,将其他药物治疗通常就足够了:

if( (ucEVENTBuf=1) ) // or whatever

但如果这对你不起作用,你可以试试这个:

else if((ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4))!=0) /* <<<<< ask explicitely to compare against 0 */

答案 1 :(得分:2)

尝试替换

else if(ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4))

else if((ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4)))

或者

else if((ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4)) != NULL)

如果你的编译器仍然给你相同的警告(它不应该),那么试试这个

else {
    ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4);
    if (ucEVENTBuf != NULL) {
    }
}

可能需要对代码结构进行其他更改。

答案 2 :(得分:2)

过去编程C时常见的错误是意外使用赋值而不是比较:

if (x = 3)

所以编译器开始警告这个。但是如果你真的想分配并使用结果作为布尔表达式,你可以。如果添加括号,某些编译器不会发出警告:

if ((x = 3))

如果您的系统还不够,可以尝试使其更明确:

if (!!(x = 3))