NDEBUG宏
概要:
#define NDEBUG //宏定义。 #undef NDEBUG //取消宏定义。
描述:
该宏会影响宏assert的行为。
该宏是<assert.h>头文件引用的宏,但不是<assert.h>头文件中定义的宏。如果在包含<assert.h>头文件时,NDEBUG已定义成宏名,宏assert将定义成以下形式:
#define assert(...) ((void)0)
每次包含<assert.h>头文件时,宏assert会根据宏NDEBUG的当前状态重新定义。
实现应将宏assert定义为形参为...的函数式宏,而不是实际函数;如果通过抑制宏定义来访问实际函数,其行为是未定义的。
范例:
|
|
输出:
Assertion failed! Program: C:\Users\dolla\Desktop\C\cTest\test.exe File: C:\Users\dolla\Desktop\C代码调试\cTest\test.c, Line 10 Expression: a != 5
宏NDEBUG用于控制assert断言的行为。如果定义了宏NDEBUG,所有assert断言会被忽略;如果未定义宏NDEBUG,assert断言会被正常检查。
相关内容:
| assert | 程序运行时测试断言的宏。 |
| static_assert | 程序编译时测试断言的宏。 |
主要参考资料: