可能重複:
warning: format not a string literal and no format arguments爲什麼的printf(的char [])生成一個警告,同時的printf( 「ASDF」)不
我有很簡單的問題:爲什麼當我發char[] s = "hi"; printf(s)
它發出警告:「警告:格式不是字符串文字和格式參數」,同時printf("aa")
不會。
我已經讀過字符數組和字符串文字(一個是const char const*
,另一個是char*
)之間的差異,但是從printf()
簽名:
我看到它是適用於任何的那類型。所以我的問題是爲什麼printf("aaa")
不發出任何警告(它是否以某種方式檢查文字是一個常量,而陣列不是)?
FWIW,VC++不會抱怨非常量文字。 – Mysticial 2012-07-10 15:08:32
哪個編譯器對您的代碼執行此操作? – Jay 2012-07-10 15:10:22
@Mystical,我同意。 VC不會抱怨。想知道爲什麼其他編譯器complians或爲什麼VC不? – Jay 2012-07-10 15:11:27