2013-04-08 55 views
1

我有以下代码:如何在不收到此警告的情况下打印下列信息?

#define HELLO 
"this is a command to ........." //this macros is very long, and it is greater than length 509 

然后我用printf(HELLO);打印出来,但我得到以下警告:

警告:字符串长度“526”比“的长度509”更大ISO C90编译器需要支持,我知道字符串太长了,它大于509,但是如何去掉这个警告?

+0

缩短字符串... – 2013-04-08 08:57:22

+0

您忘记了格式说明符。 – 2013-04-08 09:02:09

+0

是的,但它是相同的警告 – user2131316 2013-04-08 09:05:07

回答

0

1)分解成2串 的#define一个 “ABC” 的#define B “高清” 的#define C(AB) 现在无论printf(a b)printf(c)将工作

2)刚刚取消警告(代码工作,是不是?:))(http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

3)喔刚才看到的第三选项,可以使用不同的标准

1日一个是没有用的,它不会解决问题

+1

我怀疑第一个技巧是否会起作用,因为标准限制了*连接后的文字*中的字符数。 ''abc“'和'”def“'会超出限制,但粘贴的文字'”abc“”def“'会超出限制。第二个选项看起来很好,但第三个选项也很好。 – dasblinkenlight 2013-04-08 09:14:40

+0

@dasblinkenlight,谢谢指出,第1个选项没有用,预处理本身将连接字符串并替换它们。 – abasu 2013-04-08 09:17:34

+0

使用'printf(“%s%s”,a,b)'应该工作,虽然:) – dasblinkenlight 2013-04-08 09:18:47

0

如果可能,您可以使用符合C99的编译器,C99中的限制为4,095个字符。

失败的是,在运行时(一次)将字符串构建到全局字符数组中。

相关问题