0

我有一个用 Visual Studio 2010 开发的 C++ 应用程序。我有一个静态方法,调用它来解码通过串行硬件接收到的消息。

当我使用“发布”配置时,编译器以某种奇怪的方式优化了该方法,并且该方法无法按预期工作。当我使用“调试”配置时,一切都很好。

这是方法:

std::vector<BYTE> CMsg::DecodeMsg(std::vector<BYTE> & msg)
{
    std::vector<BYTE> asciiDecoded;
    for (size_t i = 0; i < msg.size() - 1; i++)
    {
        auto val2 = BaseUtils::hex2Ascii(msg.at(i++), msg.at(i));
        asciiDecoded.push_back(val2);
    }

    return asciiDecoded;
}

我认为发布配置中的一些优化(我使用 /O2)导致 i 变量出现问题。

4

0 回答 0