0


1

VC(VSTS 2008)で、デフォルトのリターンパスに値を明示的に返さない関数に対してコンパイラエラーを起こす方法はありますか(またはそれらを見つけるための他の簡単な方法)。

同じ問題で、そのような関数が実際に何を返すのかについて何か気になる人はいますか?

3 Answer


2


正確な警告番号はわかりませんが、#pragma warningを使用して特定の警告を強制的にエラーとして扱うことができます。

例:

#pragma warning(エラー:4001)

警告4001をエラーとして扱います。


1


最大警告レベルを有効にして、警告をエラーとして扱う場合は、探しているものを確実に見つけることができます。 そうでなければ何が返されるかについての_推測_関数の戻り型のデフォルトで構築されたオブジェクト。


0


VCはこの問題の多くの例について警告しますが、いくつかの検出に失敗します。 私は繰り返し関数テンプレートのこの問題を見逃しているのを見つけましたが、私はいくつかの普通の関数でもintを見ました。 警告をエラーとして扱う(コンパイラがすべての警告を切り替える、または特定のプラグマがプラグマを切り替える)と、検出したエラーを見逃すことは不可能になります。

見落としているVCには、もっと徹底的なツールを使わなければなりません。 VSTSをよく知っているなら、コンパイラのために `/ analyze`スイッチを投げてさらに問題を見つけてもらうこともできます。

糸くずのようなプログラムの多くのバージョンもあります。

他のコンパイラを使用することも役に立ちます。 初めてVSプロジェクトをGCCに移植するのはかなり難しいかもしれませんが、インテルのコンパイラはVCのドロップイン代替品として使用でき、すぐにVCプロジェクトをコンパイルできます。 http://www.comeaucomputing.com [Comeau C]にも、かなりVC互換であることへの切り替えがあり、非常に良いエラーメッセージがあります。