[英]Clang optimizations when no return statement: if(false) is entered?
[英]Atomic: if statement is entered even though the conditional is false
編輯:最小的可重現示例
#include <atomic>
int main()
{
std::atomic_uint atomic_write_position{ 0 };
unsigned write_position = atomic_write_position.fetch_add(1);
bool b = false;
b = atomic_write_position.compare_exchange_weak(write_position, 0);
if (b);
{
auto x = 0;
}
}
在此示例中, compare_exchange_weak
應該失敗,因為atomic_write_position=1
, write_position=0
,並且行為正確返回 false 並用write_position
的值atomic_write_position
。 但是,if 語句之后的行為不正確,即使 b 為假,也會輸入。
我正在使用視覺工作室 16.9.2
去掉分號; 在 if 語句中
您的評論說“如果 b 為假”,但您的測試為真。
if (b) //b is false
將其更改為:
if (!b) //b is false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.