然后在其他编译器中使用 _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
(即,如果定义了 NDEBUG
,assert()
将被禁用,请参阅 reference here)。
在 Visual Studio 项目中,_DEBUG 宏默认为调试目标 #defined,但您可以将其从项目属性对话框中的预处理器定义列表中删除。
在其他平台上,只需将#define 以某种方式传递给编译器,
即对于 *nix 系统上的 gcc 编译器,只需使用 -D 命令行选项:
gcc -D _DEBUG ....
您可以在其他 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")
我正在用 C++ 编写一个小项目,我应该在代码中包含仅在 _DEBUG 条件下才 运行 的部分。代码看起来像这样:
#ifdef _DEBUG
//Debuging code area
#endif
Visual Studio默认支持,点击IDE里面的"Run"或"Debug"即可。如何在其他环境中使用相同的功能?是否可以在 Clion(Clang 编译器)中执行此操作?如何?
对于非调试版本,更常见的#define 是 NDEBUG
(即,如果定义了 NDEBUG
,assert()
将被禁用,请参阅 reference here)。
在 Visual Studio 项目中,_DEBUG 宏默认为调试目标 #defined,但您可以将其从项目属性对话框中的预处理器定义列表中删除。
在其他平台上,只需将#define 以某种方式传递给编译器, 即对于 *nix 系统上的 gcc 编译器,只需使用 -D 命令行选项:
gcc -D _DEBUG ....
您可以在其他 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")