我正在用C ++编写一个小项目,并且我应该在代码中包含仅在_DEBUG条件下运行的部分。代码看起来像这样:
#ifdef _DEBUG
//Debuging code area
#endif
Visual Studio默认支持它,只需单击"运行"或"调试"在IDE里面。如何在其他环境中使用相同的功能?在Clion(Clang编译器)中执行它是否可行?怎么样?
答案 0 :(得分:1)
对于非调试版本,更常见的#define为NDEBUG
(如果assert()
已定义,则NDEBUG
被禁用,请参阅reference here)。
在Visual Studio项目中,默认情况下,_DEBUG marco对于Debug目标是#defined,但您可以从项目属性对话框中的预处理器定义列表中删除它。
在其他平台上,只需以某种方式将#define传递给编译器, 即对于* nix系统上的gcc编译器,只需使用-D命令行选项:
gcc -D _DEBUG ....
您可以在另一个StackOverflow post中找到有关_DEBUG与NDEBUG的更多信息。
答案 1 :(得分:0)
在开发用于跨平台兼容性的软件时,我通常更喜欢将_DEBUG的#define显式传递给编译器/工具链。
Microsoft Visual C ++编译器已经#defines它,但对于GCC,您可以使用-D命令行选项传递它,即:
gcc -D _DEBUG ...
如果您使用CMake作为构建工具(就像我一样),您可以更轻松地将其添加到CMakeLists.txt文件中:
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")