2012-04-23 3 views
4

GCCは、printf関連のバグを見つけるのを助けるために、-Wformatを提供しています。 MSVCで同じ動作をする方法はありますか?具体的には、コンパイラは引数の型チェックのいくつかのレベルを行うようにしたいと思います。私は明白にC++のiostreamライブラリをさまざまな理由で使いたくありません。 (また、私はブースト形式を使いたくない)。上記のソースを引用するprintfのargsの型にマッチしないprintf書式文字列に関する警告をVisual C++(9.0)が生成する方法はありますか?

、-Wformatは基本的に

チェックが指定された引数が指定された書式文字列に適切なタイプを持っていることを確認するなど、printfのとscanfのために呼び出し、次の機能を提供します書式文字列で指定された変換が意味を成すこと。

私はマイクロソフトのために見つけることができる最も近いが、これまでビットのビルド64 32対のため%dを使用することに関するthis warningです。

+0

: http://stackoverflow.com/questions/ 3466131/how-to-get-printf-warnings-in-visual-studio-2005 –

答えて

-3

具体的には、コンパイラが引数の型チェックのレベルを にしたいと思います。

コンパイラは、デフォルトでC++コードで型チェックを行うのが大好きです。残念ながら、その機能を提供していないCの機能を使用しようとしています。

IOストリームを使用するだけで、コンパイラは型が不一致のときに警告を出します。エラーが発生し、コードを完全にコンパイルできません。

+0

私はIostreamを避ける理由があります。主に私のパフォーマンスが遅く、二次的に許容できないのは、私のグループで偏った意見であるprintfスタイルの書式文字列が読みやすく、扱いやすいからです。私は型の安全機能が欠けていることを知っています。その理由は、その効率を補うためにいくつかの警告をしたいのです。私たちは警告についていくのが得意だから、私のチームのニーズにとってはこれが最善のトレードオフだと感じています。 –

3

私はこれがVisual Studioでサポートされている機能ではないと信じています(私はこれについての引用を見つけようとします)。私が知っている最も近いのは、_Printf_format_string_SAL annotationです。

3

残念ながら、コンパイル時にこのような警告を生成する方法はありませんが、VC++コード解析ツールは、不一致のパラメータを持つprintfのような関数の警告メッセージを生成します。

詳細については、VC++の/analyzeオプションとhttp://msdn.microsoft.com/en-us/library/vstudio/ms173498.aspxを参照してください。サイドノートとして

、人々はので、多分マイクロソフトは、将来的に何かをするだろう、この不満されています: 関連するが、VS 2005に固有のhttps://connect.microsoft.com/VisualStudio/feedback/details/799869/detection-of-format-string-errors-should-be-part-of-the-regular-c-compile-instead-of-analyze

関連する問題