考虑下面的代码示例:格式说明
#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