pointer/integer type mismatch in conditional expression

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

gcc 4.7.2 c89 

Hello,

I am getting the following warning:

pointer/integer type mismatch in conditional expression 

I am compiling with the following CFLAGS -Wall -Wextra

fprintf(stderr, "'Failed to open file' Error [ %s ]\n",         (errno == 0) ? "None" : strerror(errno)); 

The program runs ok, but I can't see that the warning is all about. Both "None" and strerror(errno) return a string and not Integer value. And I am comparing errno number to zero.

Many thanks for any suggestions,

回答1:

Check whether you have included <string.h> header. If not, the return value of strerror may be considered as an integer value. It would explain why the program runs ok (the linker can find a matched function named strerror, because the C standard library is linked by default), whereas the compiler reports a warning.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!