2017-09-06 9 views
1

C++コードでプリプロセッサを見つける方法はありますか? NDebug、NOMAXMINなど?Microsoft Visual C++で使用されているコンパイルプリプロセッサの検索方法

私は

#ifdef _DEBUG 
    std::cout << "in debug mode"; 
#else 
    std::cout << "in release mode"; 
#endif 

ような何かを行うことができますが、独自に定義することができますので、多くのプリプロセッサと同僚があります。

Microsoft Visual Studioを使用して、gccではなくC++コードを記述しています。

+1

すべてのプリプロセッサディレクティブを意味しますか?標準的なリストがあり、多くのコンパイラベンダーが独自のものを提供しています。 –

+0

定義されているすべてのマクロのリストを作成したいのですか? A *マクロ*は '_DEBUG'のような名前付きコードです。*プリプロセッサ*はマクロを評価するソフトウェアツールです。 – Beta

+0

[GCCダンププリプロセッサの定義可能な複製](https://stackoverflow.com/questions/2224334/gcc-dump-preprocessor-defines) – spectras

答えて

0

Visual Studioは自動的に_DEBUGを定義していますので、それを使用することをお勧めします。

しかし、ポータブルソリューションのために、このように、NDEBUGを使用します。

#ifdef NDEBUG 
    // nondebug 
#else 
    // debug code 
#endif 

参考文献:

  1. Predefined Macros Msdn
  2. AutomatiC#defines according to Debug/Release config in Visual Studio 2010
  3. C/C++ : Portable way to detect debug/release?

PS:同僚はほとんど何を行う可能性がありますので、マクロ、同僚によって定義されたカスタムの意味を検出するための自動的な方法はありません。

+0

私は_Debugのみをターゲットにしていませんが、すべてのプリプロセッサ – athos

+0

@athos私は自分の答えを更新しました。私はあなたの質問が好きなので、アップアップされました! – gsamaras

関連する問題