2011-08-02 10 views
1

gccがprintfタイプについて悲鳴を上げるのを避ける良い方法があるかどうか疑問に思っています: '警告:フォーマット'%d 'は' int '型の引数を期待していますが、どこか 『のtypedef int型のFOOをタイプfooがタイプについてのprintf警告を避けるには

はもちろん、私はそのためのgccの修正を探していないよ...」あなたが書いたことを知っているとき

これはかなりanoyingです』([-Wformat]) 。

もちろん、毎回キャストせずに警告を避ける方法があるかどうかを知りたいと思います!

+1

あなたはまだ他の警告を受け取りたいと思っています...そうですか?しかし、有効なprintf()警告を取得したいですか? – Patrick87

+1

虚偽と思われる警告が表示される場所のコード例を表示できますか? –

+0

@ Patrick87:そうです! – claf

答えて

8

typedef int fooがある場合は、gccから警告を受けるべきではありません。 gccの場合は、fooは本当に整数ではありません。

+0

+1。あなたが私に尋ねるなら、公正なチャンスよりも。 –

+0

*私は 'typedef int foo'を持っています - 私が知っているから*私はそれを書きましたが、実際に見ていたからではありません - そして、gccに私に警告を与えるコマンドラインスイッチのセットを見つけることができません。もちろん、int型を予期していましたが、代わりにint型にしていたことを警告します。しかし、青い百万の可能性があります。私は1つまたは2つの組み合わせを見落としている可能性があります。 –

+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 */ 
関連する問題