我想比较两个字符串:
第一个字符串在我的 main 上方声明:
char _newState[] = "AVAILABLE";
当我想与 const 字符串进行比较时,我输入了以下行:
if(strcmppgm2ram((const char *) "AVAILABLE", _newState ) == 0){
code:
}
该函数从不返回零,解决方案和正确的类型转换是什么?strcmp 是同样的问题!
看起来您的参数顺序错误。根据 C18 库手册,签名strcmppgm2ram
为
signed char strcmppgm2ram(const char * str1, const rom char * str2 );
所以你的 strng 常量应该是第二个字符串,你的字符数组应该是第一个参数。
你不应该使用演员阵容,因为他们所做的只是隐藏这样的问题。如果您有类型不匹配,那么您应该使用该信息来确定正确的类型应该是什么以及您是否犯了错误。使用强制转换就像告诉编译器忽略你所做的,即使编译器认为它应该是一个警告/错误。
尝试:
const far rom char _newState[] = "AVAILABLE";
为了将来参考,最好不要忽略编译器警告——它们可以帮助你。