如何在不更改命令行的情况下禁用断言? 我有C++代码,带有断言。当我使用g++-D NDEBUG选项编译代码时,不会执行断言命令。但是当我在代码#define NDEBUG中包含NDEBUG并使用no-D NDEBUG选项编译它时,就会执行assert命令。如何在不更改命令行的情况下禁用断言

如何在不更改命令行的情况下禁用断言? 我有C++代码,带有断言。当我使用g++-D NDEBUG选项编译代码时,不会执行断言命令。但是当我在代码#define NDEBUG中包含NDEBUG并使用no-D NDEBUG选项编译它时,就会执行assert命令。如何在不更改命令行的情况下禁用断言,c++,debugging,assert,C++,Debugging,Assert,在包含定义assert的标题之前,必须定义NDEBUG。试一试 #define NDEBUG #include <assert.h> #定义NDEBUG #包括 在源文件顶部,您希望通过定义NDEBUG来禁用中的断言。实际上,您永远不会使用 命令行中的-D NDEBUG;你应该定义你自己的 调试命令,然后当探查器显示无法 在特定函数中提供检查,将函数包装为 比如: // Non-critical code... #ifdef MYDEBUGOFF #define NDEBUG

在包含定义
assert
的标题之前,必须定义
NDEBUG
。试一试

#define NDEBUG
#include <assert.h>
#定义NDEBUG
#包括

在源文件顶部,您希望通过定义
NDEBUG
来禁用中的断言。实际上,您永远不会使用 命令行中的
-D NDEBUG
;你应该定义你自己的 调试命令,然后当探查器显示无法 在特定函数中提供检查,将函数包装为 比如:

//  Non-critical code...

#ifdef MYDEBUGOFF
#define NDEBUG
#endif
#include <assert.h>

//  Critical function

#undef NDEBUG
#include <assert.h>

//  More non-critical code.
//非关键代码。。。
#ifdef MYDEBUGOFF
#定义NDEBUG
#恩迪夫
#包括
//临界函数
#未定义NDEBUG
#包括
//更多非关键代码。
您可以随时包含
;每次都是 根据
NDEBUG
是否正确,重新定义
assert
宏 就在那一刻。所以你可以调到你内心的 内容;每次只需定义NDEBUG或取消NDEBUG 在包含标题之前