山寨:不是最好的,是最适合我们的!欢迎体验山寨 中文版MSDN

Blog @ Blog

当华美的叶片落尽,生命的脉络才历历可见。 -- 聂鲁达

常用链接

统计

积分与排名

BBS

Blog

Web

最新评论

ASSERT()是干什么用的?

ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
    ......
    ASSERT( n != 0);
    k = 10/ n;
    ......
    ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
    assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。


posted on 2007-09-20 22:39 isabc 阅读(521) 评论(2)  编辑 收藏 引用 所属分类: C++基础

评论

# re: ASSERT()是干什么用的? 2007-09-20 22:39 Lee7

Assert 宏应该大家都知道是干什么用的吧, 可能大家一般都用来检查下指针为空啊。
不过assert还有许多使用技巧的。

1.基本用法

void VectorNormalize(Vec* src, Vec* dat)
{
float length;
assert(src!=0);//检查src向量必须不为空
assert(dst!=0);//检查dst向量必须不为空

..................
..................
}

2.让assert嵌入更多的信息

void VectorNormalize(Vec* src, Vec* dst)
{
float length;
assert(src!=0 && "VectorNormalize: src vector pointer is Null");
assert(dst!=0 && "VectorNormalize: dst vector pointer is Null");

...................
...................
}
有了这个直观的字符串提示,就可以告诉当前的函数名,错误原因。
  回复  更多评论   

# re: ASSERT()是干什么用的? 2007-09-20 23:00 Lee7

trace 函数
trace(expression:Object)

可以使用 Flash 调试播放器捕获 trace() 函数的输出,并将该输出写到日志文件。

语句;在测试模式中,计算表达式并在"输出"面板中显示结果。

在测试 SWF 文件时,使用此语句可在"输出"面板中记录编程注释或显示消息。使用 expression 参数可以检查是否存在某种条件,或在"输出"面板中显示值。trace() 语句类似于 JavaScript 中的 alert 函数。

可以使用"发布设置"对话框中的"省略跟踪动作"命令将 trace() 动作从导出的 SWF 文件中删除。

可用性:ActionScript 1.0;Flash Lite 1.0

参数
expression:Object -- 要计算的表达式。在 Flash 创作工具中打开 SWF 文件时(使用"测试影片"命令),expression 参数的值显示在"输出"面板中。

示例
下面的示例使用 trace() 语句在"输出"面板中显示动态创建的名为 error_txt 的文本字段的方法和属性:

this.createTextField("error_txt", this.getNextHighestDepth(), 0, 0, 100, 22);
for (var i in error_txt) {
trace("error_txt."+i+" = "+error_txt[i]);
}
/* output:
error_txt.styleSheet = undefined
error_txt.mouseWheelEnabled = true
error_txt.condenseWhite = false
...
error_txt.maxscroll = 1
error_txt.scroll = 1
*/  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


广告信息(免费广告联系)

中文版MSDN:
欢迎体验