do [[unlikely]] {...} while(a == 0);
可以编译此代码。但这是告诉编译器a通常为非零的正确方式吗?
a
zz2j4svz1#
从结构上讲,这是一种正确的表达方式。属性被放置在一个位置,该位置标记了可能/不可能被执行的执行路径。将它应用于do/while循环的block语句就足够了。它也可以在block中工作。话虽如此,我们还不清楚这样做实际上有什么好处。它可能会阻止一些循环的展开或禁止预取。但它不能真正改变编译代码的结构,因为块必须至少执行一次,条件分支必须在块之后。
do/while
1条答案
按热度按时间zz2j4svz1#
从结构上讲,这是一种正确的表达方式。属性被放置在一个位置,该位置标记了可能/不可能被执行的执行路径。将它应用于
do/while
循环的block语句就足够了。它也可以在block中工作。话虽如此,我们还不清楚这样做实际上有什么好处。它可能会阻止一些循环的展开或禁止预取。但它不能真正改变编译代码的结构,因为块必须至少执行一次,条件分支必须在块之后。