VS2010 自动跳过代码现象

本文描述了在VS2010的Release模式下遇到的代码跳过执行问题及解决方案。通过实验发现,可能是由于编译器优化导致部分代码未被执行。作者通过在变量前添加volatile关键字解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日,发现在Release的调试模式下,VS2010会“莫名其妙”的跳过一些代码不执行.

经实验,初步判断可能的原因:预处理器指令或编译器/连接器优化。

20150703更新:

部分代码:

  m_pTameAtomicClock = new TAC::CTameAtomicClock;
  CString TameAtomicClockPath = GetCurDir() + "\TAC";
  int ErrorCode = m_pTameAtomicClock->InitDocile(Port, TameAtomicClockPath);
    if (!(0 == ErrorCode))//if内条件不执行
    {
      return ErrorCode;//直接执行这一步
    }

 

  经实验判断,或许是因为名字空间的问题(不确定),编译器把关于变量ErrorCode直接相关的代码都优化掉了。

  在ErrorCode前加volatile 关键字就好了(难道编译器认为这个变量不会被本程序改变?)。

  具体本质原因,还需要资料支撑,正在寻找中。

——ZXF_2015-07-02 10:59:04

转载于:https://www.cnblogs.com/weiweisuhe/p/4582425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值