C++クラスに少し問題があります...
プライベートメンバーがいbool clientConnected
ます。
とゲッターbool isClientConnected() {return clientConnected;}
ここで問題となるのは、clientConnectedが別のスレッドから設定されていることです。
主に私はループを持っています
while (!x.isClientConnected())
{}
デバッグ構成でコンパイルすると、
すべて正常に動作します...clientConnectedがtrueに設定されるとすぐに終了します。
しかし、リリース構成でコンパイルすると。
コンパイラーは、ループを定数として最適化します。
そして次のようになります:
00141C01 cmp al,bl
00141C03 je SDL_main+0A1h (141C01h)
alの値は二度と更新されません。
だからそれはいつもそれを間違っていると思います。
私も揮発性の同じ結果で試しました
クラスでこの最適化を防ぐにはどうすればよいですか。次のような記述をしなくても、呼び出しごとに値が更新されます。
bool z = x.isClientConnected();
while (!z) { z = x.isClientConnected(); }