gcc 4.7.2 c89


你好,

我收到以下警告:

pointer/integer type mismatch in conditional expression


我正在使用以下CFLAGS -Wall -Wextra进行编译

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


该程序运行正常,但我看不到警告的全部内容。 “ None”和strerror(errno)均返回字符串,而不返回Integer值。我正在将errno数字与零进行比较。

非常感谢您的任何建议,

最佳答案

检查是否包含<string.h>标头。如果不是,则可以将strerror的返回值视为整数值。它可以解释为什么程序可以正常运行(链接器可以找到名为strerror的匹配函数,因为默认情况下C标准库是链接的),而编译器将报告警告。

10-07 16:03