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

时间:2017-03-17 12:45:49

标签: c++ clion

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

#ifdef _DEBUG 
//Debuging code area
#endif

Visual Studio默认支持它,只需单击"运行"或"调试"在IDE里面。如何在其他环境中使用相同的功能?在Clion(Clang编译器)中执行它是否可行?怎么样?

2 个答案:

答案 0 :(得分:1)

对于非调试版本,更常见的#define为NDEBUG(如果assert()已定义,则NDEBUG被禁用,请参阅reference here)。

在Visual Studio项目中,默认情况下,_DEBUG marco对于Debug目标是#defined,但您可以从项目属性对话框中的预处理器定义列表中删除它。

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

gcc -D _DEBUG ....

reference here

您可以在另一个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")