ndebug与debug及assert()的用法
来源:互联网 发布:2017重庆消防网络晚会 编辑:程序博客网 时间:2024/06/10 00:34
- //no
debug 关闭调试,忽略掉所有的assert - //即使有出错的情况
- #define
NDEBUG - //默认情况下会调式是打开着的
- //#define
DEBUG - #include
- #include
-
- int
main( intargc char**, argv){ -
value = 12; -
assert(13 == value); -
1; - }
trace(),assert()都只是在DEBUG的模式下才起作用的,如果定义了NDEBUG,编译器会认为是非DEBUG的模式(虽然编译出来的程序还是很大,而且还可以进行调试),此时trace(),assert()就没有用了.就如同你编译成release版的时候这些没有用一样.
函数名:
功
用
程序例:
#include
#include
#include
struct
};
void
}
int
{
}
assert(断言)可以有两种形式:
assert
assert
Expression1
Expression2
断言在默认情况下是禁用的。要在编译时启用断言,需要使用
javac
要在运行时启用断言,可使用
要在运行时选择禁用断言,可使用
要系统类中启用断言,可使用
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
assert()
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include
void
assert的作用是现计算表达式
然后通过调用
请看下面的程序清单badptr.c:
#include
#include
#include
int
{