然后在其他编译器中使用 _DEBUG 定义 Visual Studio

Use _DEBUG definition in other compilers then Visual Studio

我正在用 C++ 编写一个小项目,我应该在代码中包含仅在 _DEBUG 条件下才 运行 的部分。代码看起来像这样:

#ifdef _DEBUG 
//Debuging code area
#endif

Visual Studio默认支持,点击IDE里面的"Run"或"Debug"即可。如何在其他环境中使用相同的功能?是否可以在 Clion(Clang 编译器)中执行此操作?如何?

对于非调试版本,更常见的#define 是 NDEBUG(即,如果定义了 NDEBUGassert() 将被禁用,请参阅 reference here)。

在 Visual Studio 项目中,_DEBUG 宏默认为调试目标 #defined,但您可以将其从项目属性对话框中的预处理器定义列表中删除。

在其他平台上,只需将#define 以某种方式传递给编译器, 即对于 *nix 系统上的 gcc 编译器,只需使用 -D 命令行选项:

gcc -D _DEBUG ....

(reference here)

您可以在其他 Whosebug post.

中找到更多关于 _DEBUG 与 NDEBUG 的信息

在开发跨平台兼容性的软件时,我通常更喜欢将_DEBUG 的#define 显式传递给compiler/toolchain。

Microsoft Visual C++ 编译器已经#defines 它,但对于 GCC,您可以使用 -D 命令行选项传递它,即:

gcc -D _DEBUG ...

如果您使用 CMake 作为构建工具(就像我一样),您可以更轻松地将它添加到您的 CMakeLists.txt 文件中:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")