条件表达式中的指针/整数类型不匹配

时间:2012-11-04 15:46:13

标签: c ternary-operator

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数字与零进行比较。

非常感谢任何建议,

1 个答案:

答案 0 :(得分:5)

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