2011-08-02 77 views
1

我想知道是否有一個很好的方式來避免gcc尖叫printf類型: 'warning:格式'%d'需要'int'類型的參數,但參數12有型富」如何避免有關類型的printf警告

這是很是煩人,當你知道你寫‘的typedef INT富’的地方......

當然,我不是在尋找一個海灣合作委員會補丁([-Wformat]) 。

我想知道是否有避免警告的方法,而不是每次都投射!

+1

我猜你的意思是說你還想獲得其他警告......對嗎?但是,你想獲得有效的printf()警告嗎? – Patrick87

+1

您能告訴我們一個代碼示例,您會在哪裏得到您認爲是虛假的警告? –

+0

@ Patrick87:是的! – claf

回答

8

如果你有typedef int foo,gcc不應該警告你。如果gcc警告你,有一個公平的機會foo真的不是一個整數。

+0

+1。如果你問我,這不僅僅是一個公平的機會。 –

+0

*我有'typedef int foo' - 不是因爲我知道*我寫了它,而是因爲我實際上看過了 - 我找不到一組命令行開關,它們會使gcc給我一個警告。當然,它會警告我,雖然它期望一個int,但是我給它一個int。儘管如此,還是有着千萬種可能性。我可能忽略了一種或兩種組合。 –

+0

是的,發佈這個問題太快了......對不起人,gcc已經知道對我們有什麼好處了:) – claf

0

這有全部未定義的行爲。 請勿使用!

char *fmt; 
fmt = "%d%f%p%u\n"; 
printf(fmt, 1, 1, 1, 1, 1, 1, 1, 1, 1); /* fill stack with values */ 
相關問題