たぶんこれは悪いプログラミングのケースでした、しかしそれは6.0から11.1へのXLC++のアップグレードでそれ自身を明らかにしています。
コードは次のようになります:
int startAt = 140;
startAt = parseAndSaveResponseINSTANTID_MODEL(response, startAt);
COUT << "After tokenize INSTANTID_MODEL startAt=" <<startAt <<ENDL;
startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_CHRON_HISTORY(response, startAt);
COUT << "After tokenize INSTANTID_MODEL startAt=" <<startAt <<ENDL;
startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_FOLLOWUP_ACTION(response, startAt);
COUT << "After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=" <<startAt <<ENDL;
startAt = startAt++;
startAt = parseAndSaveResponseINSTANTID_RISK_INDICATOR(response, startAt);
COUT << "After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=" <<startAt <<ENDL;
そして、それぞれの解析メソッド内で、return (startAt + 1 + vRows * 81);
vRowsはすべてのメソッドでゼロです。
古いコンパイラでは、出力は次のようになります。
After tokenize INSTANTID_MODEL startAt=141
vRows=0
After tokenize INSTANTID_MODEL startAt=142
vRows=0
After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=143
vRows=0
After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=144
しかし、新しいコンパイラでは、出力は次のようになります。
After tokenize INSTANTID_MODEL startAt=141
vRows=0
After tokenize INSTANTID_MODEL startAt=143
vRows=0
After tokenize TSTID_INSTANTID_FOLLOWUP_ACTION startAt=145
vRows=0
After tokenize TSTID_INSTANTID_RISK_INDICATOR startAt=147
整数/戻り値の処理方法に変更はありましたか?