考虑以下代码示例:
#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 标准?