2017-09-06 42 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

相关问题