2017-09-06 68 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編寫C++代碼,而不是gcc。

+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

相關問題