考慮下面的代碼示例:格式說明
#define STRING_LITERAL "%u, %u"
const char string_const[ ] = "%u, %u";
snprintf(dest_buff, sizeof(dest_buff), STRING_LITERAL, arg1, arg2, arg3);
我的編譯器則發出警告:
snprintf(dest_buff, sizeof(dest_buff), string_const, arg1, arg2, arg3);
:如果我改變指令,這種說法
之前的格式字符串結尾現在
然後編譯器沒有發出警告。
我的問題是:這樣的行爲是否符合C99標準?
C99是否要求符合規範的編譯器根據無效的printf()調用(或任何其他可變參數調用)發出警告? – user3125367