2016-04-01 5 views
1

に厄介な警告C4100を避け、私は私がなぜ理解していないのVisual Studio 2013を使用して、このは、ビジュアル・スタジオ

void destroy(pointer p) {//warning C4100 
    p->~T(); 
} 

のような例ではC4100の警告の多くを得ますよ。 #pragma warning(プラットフォーム独立性、可読性)なしでこの警告を回避するにはどうすればよいですか?

+0

ワンステップバック...なぜオブジェクトデストラクタを明示的に呼び出すのですか?それが有用な状況はほとんどありません。実際に何もせずに、そのパラメータを_reference_するために_try_単に 'p;'することができます。 –

+0

'delete p;'を呼び出さないのはなぜですか? – Fabian

答えて

3

これはVisual Studio bug/limitationです。コードは、プリミティブ型のそれ以外の場合は参照されていないパラメータにデストラクタを呼び出したときに

C4100も発行することができます。 これはVisual C++コンパイラの制限です。

バグ報告があるはずですが、私は現時点でそれを見つけることはできません。

回避策:

  1. リファレンスpそうでない場合:/W4または

  2. なしでコンパイル

    • void destroy(pointer p) { 
          p;   //resolve warning C4100 
          p->~T(); 
      } 
      
    • は警告を無効にします210

    • /wd4100または
    • #pragma warning(disable : 4100)
  3. 別のコンパイラを使用してくださいを追加してコンパイルします。

+0

なんて残念なのでしょう、共にありがとう – user1235183