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整数値と見なされる場合があります。プログラムが正常に実行される理由を説明します(C標準ライブラリはデフォルトでリンクされているため、リンカは、という名前の一致する関数を見つけることができstrerrorます)が、コンパイラは警告を報告します。

于 2012-11-04T15:49:48.073 に答える