3
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) 都返回一个字符串而不是整数值。我正在将 errno 数与零进行比较。

非常感谢您的任何建议,

4

1 回答 1

5

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

于 2012-11-04T15:49:48.073 回答