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変数が混乱していると思います。