如何在C++20中使用[[(不)可能的]]在do while循环中?

dpiehjr4  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(139)
do [[unlikely]]
{...}
while(a == 0);

可以编译此代码。
但这是告诉编译器a通常为非零的正确方式吗?

zz2j4svz

zz2j4svz1#

从结构上讲,这是一种正确的表达方式。属性被放置在一个位置,该位置标记了可能/不可能被执行的执行路径。将它应用于do/while循环的block语句就足够了。它也可以在block中工作。
话虽如此,我们还不清楚这样做实际上有什么好处。它可能会阻止一些循环的展开或禁止预取。但它不能真正改变编译代码的结构,因为块必须至少执行一次,条件分支必须在块之后。

相关问题