【问题标题】:How to find compilation preprocessor used in Microsoft Visual C++如何找到 Microsoft Visual C++ 中使用的编译预处理器
【发布时间】:2018-02-15 13:27:18
【问题描述】:

有没有办法在 c++ 代码中找出预处理器,例如NDebug、NOMAXMIN 等?

我可以做类似的事情

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

但是有这么多预处理器,同事也可以自己定义。

我使用 Microsoft Visual Studio 编写 C++ 代码,而不是 gcc。

【问题讨论】:

  • 你的意思是所有的预处理指令吗?有一个标准列表,许多编译器供应商也提供了自己的。
  • 您的意思是要生成所有已定义宏的列表吗? macro 是一段已命名的代码,例如 _DEBUGpreprocessor 是一种评估宏(除其他外)的软件工具。
  • @spectras 谢谢提醒,我实际上是在微软视觉工作室工作。
  • @athos> 在这种情况下,完整列表可在 Visual Studio documentation 中找到。

标签: c++ visual-studio compilation macros preprocessor


【解决方案1】:

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:没有自动检测同事定义的自定义宏含义的方法,因为同事几乎可以做任何事情。

【讨论】:

  • 我的目标不是 _Debug,而是所有的预处理器
  • @athos 我更新了我的答案,你现在喜欢吗?我喜欢你的问题,因此投了赞成票!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多