2013-04-08 79 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個字符。

失敗的是,在運行時(一次)將字符串構建到全局字符數組中。

相關問題