断言assert()使用简介
2012-10-17 09:23
190 查看
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE
(0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。
所需头文件:#include <assert.h>
报告错误的条件:assert(0);
说明:在某些资料上可能会说,assert()只有在Debug版本中才有效,但本人试过在Qt Creator上试过assert()无论在Debug版本还是Release版本都能用。另外网上还有一个ASSER()的说法,本人没试验出来,不作评说。
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
assert((pvTo != NULL) && (pvFrom != NULL));
//
使用断言
byte *pbTo = (byte *) pvTo;
//
防止改变pvTo 的地址
byte *pbFrom = (byte *) pvFrom;
//
防止改变pvFrom 的地址
while(size -- > 0 )
*pbTo ++ = *pbFrom ++ ;
return pvTo;
}
何时需要使用断言
1.可以在预计正常情况下程序不会到达的地方放置断言:ASSERT( FALSE );
2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
3.使用断言测试方法执行的前置条件和后置条件
4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
什么地方不要使用断言
断言语句不是永远会执行,可以屏蔽也可以启用
因此:
1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值
(0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。
所需头文件:#include <assert.h>
报告错误的条件:assert(0);
说明:在某些资料上可能会说,assert()只有在Debug版本中才有效,但本人试过在Qt Creator上试过assert()无论在Debug版本还是Release版本都能用。另外网上还有一个ASSER()的说法,本人没试验出来,不作评说。
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
assert((pvTo != NULL) && (pvFrom != NULL));
//
使用断言
byte *pbTo = (byte *) pvTo;
//
防止改变pvTo 的地址
byte *pbFrom = (byte *) pvFrom;
//
防止改变pvFrom 的地址
while(size -- > 0 )
*pbTo ++ = *pbFrom ++ ;
return pvTo;
}
何时需要使用断言
1.可以在预计正常情况下程序不会到达的地方放置断言:ASSERT( FALSE );
2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
3.使用断言测试方法执行的前置条件和后置条件
4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
什么地方不要使用断言
断言语句不是永远会执行,可以屏蔽也可以启用
因此:
1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值
相关文章推荐
- 学习使用TestNG中的断言(Assertion) (1) ——Assertion概述与assertEquals方法简介
- Linux C 中断言assert()使用简介
- Linux C 中断言assert()使用简介
- 模态对话框使用OnOK结束时,ASSERT(ContinueModal())断言处报错
- 自动化测试基础-断言(Assert)使用方法
- java断言的使用和契约式设计编程模型简介
- 使用assert.h简介
- 【Java基础】——断言assert使用
- 详解C++编程中断言static_assert的使用
- spring的断言工具类Assert的基本使用
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
- 理解和正确使用Java中的断言(assert)
- 使用断言NSAssert()和NSParameterAssert调试程序错误
- java 断言 assert 初步使用:断言开启、断言使用
- 关于ASSERT(断言)使用的规则
- 【Java基础】——断言assert使用
- vector容器使用和assert断言关键字
- Python中何时使用断言 assert
- C++ Assert()断言机制原理以及使用
- 关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》(转载)