| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 383 人关注过本帖
标题:感觉VC6.0的报错机制不是那么好……
只看楼主 加入收藏
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
感觉VC6.0的报错机制不是那么好……
小弟今天练习建立动态链表,
其中在用到scanf函数时忘了写一个地址符号“&”,但是编译依然成功,0 error,0 warning
可是运行时就显然弹出内存错误,程序被强行关闭;

后来我测试了一下下面这句话
int num;
scanf("%d",num);
发现,在VC6.0中,0 error,0 warning
在TC2.0中,0 error,2 warning
看来,VC6.0的报错机制没有TC2.0那么好啊,人家好歹还有两个warning,……

搜索更多相关主题的帖子: 测试 warning 
2012-05-06 22:14
dzp1018
Rank: 2
等 级:论坛游民
帖 子:43
专家分:92
注 册:2012-3-15
收藏
得分:10 
同感...........
2012-05-06 22:30
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
额,其实后来发现,VC还是有warning的,就在warning(0)的上面那句……
刚才只注意括号里的数字去了……
2012-05-07 23:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你把TC的报错画面截出来看看?

授人以渔,不授人以鱼。
2012-05-08 23:51
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
回复 4楼 TonyDeng
额?T版,我哪里说TC报错了?
我只是小感慨而已……
因为TC中至少会把警告的那句加个灰色的高亮,然后提示:“可能num在定义前就被使用了”
但是VC中木有高亮,而且最后一句还是显示(0)warning,
只是在(0)warning的上面一句会提示“本地变量num未初始化”……
(直译的,或许有出入)
感觉TC看起来清晰一点啊……
2012-05-09 00:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我说的有警告的画面和警告信息,不过你已经用文字叙述了。那是提示变量在使用之前没有赋值,属于警告级别。但对你那个测试代码而言,两者都同样检测不到真正的错误:scanf("%d", num),给出的不是指针。这种用法出警告没赋值很正常,但同样没赋值之下,代码scanf("%d", &num)却是完全正确的。可见,没有赋值(初始化)不是问题的本质。

实际上,C语言规范本身就不禁止scanf("%d", num)这样的表达式。你说的两个编译器,无论它们怎么聪明,也只能到检测没有初始化这个地步,却检测不到真正的错误,如果程序员没有经验,根据这个信息,在上面令int num = 0,就可以轻易取消这样的警告,但执行之下,仍然是错误的。

[ 本帖最后由 TonyDeng 于 2012-5-9 00:51 编辑 ]

授人以渔,不授人以鱼。
2012-05-09 00:43
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
额,虽然很不好意思,不过我还是承认自己习惯不好……
因为我编译后只会看最下方的error和warning的个数,只要都是0,我就不再看上面的东西了……
最后,多谢指教……
2012-05-09 00:51
快速回复:感觉VC6.0的报错机制不是那么好……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025104 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved