【发布时间】:2012-07-10 15:04:55
【问题描述】:
可能重复:
warning: format not a string literal and no format arguments
我有一个非常简单的问题:为什么当我制作 char[] s = "hi"; printf(s) 时它会发出警告:“警告:格式不是字符串文字并且没有格式参数”,而 printf("aa") 不会。
我已经读过 char 数组和字符串字面量之间的区别(一个是 const char const*,另一个是 char*),但来自 printf() 签名:
我发现它适用于任何类型。所以我的问题是为什么printf("aaa") 不发出任何警告(它是否以某种方式检查文字是常量,而数组不是)?
【问题讨论】:
-
FWIW,VC++ 不会抱怨非常量文字。
-
哪个编译器对您的代码执行此操作?
-
@Mystical,我同意。 VC没有抱怨。想知道为什么其他编译器兼容或为什么 VC 不兼容?
-
@Jay gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3