我有一个 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(); }