vs2012链接错误再分析

上次发现过的vs2012链接错误又出现了几次,这下可以分析原因了。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(347,5): error MSB6006: "CL.exe" exited with code 1.


这几次出现的错误都和“基于范围的循环”有关,但是表现略有不同。


首先,所有的错误都出现在这样一句里面:

for(auto item:myList)

    ...

其中,myList按照vs2012的要求,必须要有begin和end方法。这种循环是遍历vector/map最省事的方法。如果myList没有这两个方法,那就一定会出现链接错误。

  1. 如果是出现在一个普通的函数里面,vs2012会显示一条红色的波浪线,表示有错误。把鼠标放在上面也会提示错误信息。但是即使是这种情况,vs2012的编译过程也不会报错,而是在链接的时候挂掉。这确实有点奇怪,编译程序怎么还不如编辑界面的检查呢?
  2. 如果是出现在一个模板函数或者模板类里面,那这条波浪线也不会出现,所以出了问题就更难查
  3. 即使没有任何错误,但是for循环里面一无所有,cl.exe也仍然会挂掉。这是最奇怪的现象。昨天为了调试,顺手注释掉了循环中的所有内容,结果害得我伤透了脑筋。


我的猜测是,vs2012大概把这种循环当作了某种模板来展开实现的,但是在展开之后编译器的检查又不够完善,因此导致了这类问题。


希望vs的下一个补丁能把这个问题修掉吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值