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數字與零比較。
非常感謝您的任何建議,
不,我沒有。我剛剛收錄了它,警告消失了。這是因爲string.h包含strerror函數。但是,如果是這樣的話,我已經在手冊頁中看到了。所以不應該給我一個編譯錯誤?謝謝。 – ant2009
很久以前,C語言允許你使用一個沒有聲明的函數。然後它會假定該函數返回一個「int」。這種行爲現在是非標準的(因爲你遇到了後果),但許多編譯器仍然接受它以與舊代碼兼容。我很驚訝你沒有使用'-Wall -Wextra'得到一個警告(對於函數的使用,而不僅僅是條件表達式)。 –