0

VisualStudio2010で開発された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