我一直在阅读关于优化代码中代码执行保证的很多关于 SO 的问题,所以我试图编译一个关于允许/阻止编译器重新排序代码序列的原因列表。
我已经从通常正确的答案开始,但我没有从标准中添加引号(这是根据我的经验得出的)。如果有任何被遗忘或扩展/更正的内容,我会要求您添加到提供的答案中。
另外,有人可以为我验证代码块是否不需要重新排序。IE
void fn()
{
{ /* code block 1 */ ... }
{ /* code block 2 */ ... }
}
代码是否可以code block 1
混合或在之前执行code block 2
?