C++ C+中的掩盖资产+;
我一直在向包中添加一个模块。我有一堆C++ C+中的掩盖资产+;,c++,assert,C++,Assert,我一直在向包中添加一个模块。我有一堆断言,我现在意识到它们既没有被触发,也没有被编译。怎么可能?我在网上搜索“蒙面资产”,但没有任何线索。包的make规则是否会以某种方式删除断言?即使是断言(0)也不会导致程序SIGABORT…检查预处理器设置。定义NDEBUG(即编译器命令行上的-DNDEBUG)时,将删除所有断言。检查预处理器设置。定义NDEBUG(即编译器命令行上的-DNDEBUG)时,将删除所有断言。断言宏取决于NDEBUG的定义 如果定义了NDEBUG,则断言定义为: #define
断言,我现在意识到它们既没有被触发,也没有被编译。怎么可能?我在网上搜索“蒙面资产”,但没有任何线索。包的make规则是否会以某种方式删除断言?即使是断言(0)
也不会导致程序SIGABORT…检查预处理器设置。定义NDEBUG
(即编译器命令行上的-DNDEBUG
)时,将删除所有断言。检查预处理器设置。定义NDEBUG
(即编译器命令行上的-DNDEBUG
)时,将删除所有断言。断言宏取决于NDEBUG的定义
如果定义了NDEBUG,则断言定义为:
#define assert(ignore) ((void)0)
assert仅在调试模式下进行检查,而不在发布模式下进行检查。assert宏取决于定义 如果定义了NDEBUG,则断言定义为:
#define assert(ignore) ((void)0)
assert只在调试模式下进行检查,而不在发布模式下进行检查。hm,那么“忽略”也是一个关键字吗?谢谢大家,我删除了makefile模板中的“-D NDEBUG”行,现在它可以工作了。不<代码>忽略不是关键字。它是宏参数,在本例中被宏定义忽略。hm,那么“ignore”也是一些关键字吗?谢谢大家,我删除了makefile模板中的“-D NDEBUG”行,现在它可以工作了。不<代码>忽略不是关键字。它是宏参数,在本例中,宏定义将忽略该参数。