我在嵌入式c(在Kiel4中)中编写代码,将缓冲区AtRes中的String与C003进行比较,并将其分配给uc EVENTbuf,如
else if(ucEVENTBuf=tmMisc_strnstr((INT8C *)AtRes,"C003,",4))
现在我收到警告
assignment in condition
如何克服这种警告。 谢谢
答案 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))