assert

vicness 2008-09-26 07:56:52
各位大侠:
我所见过的assert基本被用来在函数开头判断传入参数的正确性。
例如:
#include <assert.h>
void test_assert(char* p)
{
assert(p!=NULL);
...
}
好像我见的assert基本都这种用法,在进入test_assert的时候,先判断传入的指针p是否为空,如果为空,则自动调用abort()终止程序。
请问assert还有其他的用法吗?
...全文
231 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_lily_1985 2012-05-28
  • 打赏
  • 举报
回复
嗯,正在学习这个
dulein 2011-11-21
  • 打赏
  • 举报
回复
谢谢分享,学习了~!
folaide 2011-08-01
  • 打赏
  • 举报
回复
学习了
lzp765 2008-09-26
  • 打赏
  • 举报
回复
用得最多就是判断了!
就像:
#include <assert.h>
void test_assert(char* p)
{
assert(p!=NULL);
...
}
其它的没咱见过哈.
sandy_hit 2008-09-26
  • 打赏
  • 举报
回复
受教了
fengwenqi 2008-09-26
  • 打赏
  • 举报
回复
学习中!
帅得不敢出门 2008-09-26
  • 打赏
  • 举报
回复
也可以自己修改下宏.
输出出错的具体信息.
如哪个文件,哪行,哪句,哪个代码.
study_live 2008-09-26
  • 打赏
  • 举报
回复
The assert routine is available in both the release and debug versions of the C run-time libraries. Two other assertion macros, _ASSERT and _ASSERTE, are also available, but they only evaluate the expressions passed to them when the _DEBUG flag has been defined.
zgjxwl 2008-09-26
  • 打赏
  • 举报
回复
在开发过程中我们可以假设只要程序运行正确,某一条件肯定成立。如不成立,那么我们可以断言程序肯定出错。在这种情况下我们可以利用ASSERT来设定断言。ASSERT宏的参数是一个逻辑表达式,在程序运行过程中,若该逻辑表达式为真,则不会发生任何动作,若此表达式为假,系统将弹出一个对话框警告你,并停止程序的执行。同时要求你作出选择:Abort,Ignore, Retry。若你选择Abort,系统将停止程序的执行;若你选择Ignore 系统将忽略该错误,并继续执行程序;若你选择Retry ,系统将重新计算该表达式,并激活调试器。同TRACE宏一样,ASSERT宏只DEBUG版本中起作用,在RELEASE版本中ASSERT宏将被忽略

http://dev.csdn.net/article/72/72549.shtm

一般就这样用这个调试宏把.
iu_81 2008-09-26
  • 打赏
  • 举报
回复
在函数开始处检验传入参数的合法性
每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题
assert和后面的语句应空一行,以形成逻辑和视觉上的一致感
vicness 2008-09-26
  • 打赏
  • 举报
回复
晕,这个我也知道,除了这个就没别的用处了?
jay的Fans 2008-09-26
  • 打赏
  • 举报
回复
assert断言撒
就知道这个了
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧