调试版本到底有什么用?

sms88 2006-04-16 11:12:23
今天把《编程精粹》都看到第八章了,忽然蹦出一个问题,觉得调试版本是形同虚设的。
比如:
void fun(char *str)
{
//...A
assert(str!=NULL);
//...B
}
在调试版本中是具有以上代码,可在交付版本中却是这样的代码:
void fun(char *str)
{
//...A
//...B
}

交给用户的只能是交付版本产生的exe,那么还是一样不能阻止str为空啊!




...全文
168 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sms88 2006-04-17
  • 打赏
  • 举报
回复
交付版本中是以下这样的代码生成的exe文件
void fun(char *str)
{
//...A
//...B
}

这样的代码跟不加assert写出的代码是一样的啊,那在交付版本中如何保证str不为NULL
zez 2006-04-17
  • 打赏
  • 举报
回复
等你真的做开发的时候就知道了...

任何一个软件,都经过很长很长的时间调试,解决之后,才会发布的...
既然已经都调试好了,发布的时候当然要把调试信息干掉了,
逸学堂 2006-04-17
  • 打赏
  • 举报
回复
调试版本,关键是调试
这样写的目的
assert(str!=NULL);
就是为了在调试时发现问题,并改正。
goodluckyxl 2006-04-17
  • 打赏
  • 举报
回复
重点在前两个字
jinjiajie 2006-04-17
  • 打赏
  • 举报
回复
只是让你发现问题,然后去解决问题的手段
adintr 2006-04-17
  • 打赏
  • 举报
回复
调试版当然是调试用啊,哈哈
zez 2006-04-17
  • 打赏
  • 举报
回复
你还是不明白!!!

判断是否为空仅仅是调试的时候,并且出错的时候才可能为空!!!

release版的时候,就已经确定这里是绝对不可能为空的,加是否为空判断纯粹多此一举!!!
jinjiajie 2006-04-17
  • 打赏
  • 举报
回复
交付版本中是以下这样的代码生成的exe文件
void fun(char *str)
{
//...A
//...B
}

这样的代码跟不加assert写出的代码是一样的啊,那在交付版本中如何保证str不为NULL


.......做个判断语句嘛
rickerliang 2006-04-17
  • 打赏
  • 举报
回复
不是啊,怎么我在玩needforspeed mostwanted有时候也会弹出assert对话框?难到EA是release了debug版?

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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