Mar*_* Ba 13 c++ c++11
我本来可以将这个措辞称为什么构成可观察的行为?
C++标准谈论了很多关于可观察行为的内容,但我不确定程序终止是否是可观察行为的一部分.
也就是说,给出如下程序:
int main() { for(;;) {} return 0; }
是一个符合要求的实现允许终止此程序?
Mot*_*tti 6
是的,编译为上面的代码生成一个空的主体是合法的(因此几乎立即终止).
C++ 0x FCD说6.5表示(特别注意注释):
一个循环,在for语句的情况下,在for-init语句之外, *不调用库I/O函数, *不访问或修改volatile对象, *不执行同步操作(1.10)或原子操作(第29条) 可以通过实现来假设终止.[ 注意:这是为了允许编译器转换,例如删除空循环,即使终止无法证明.- 结束说明 ]
一个循环,在for语句的情况下,在for-init语句之外, *不调用库I/O函数, *不访问或修改volatile对象, *不执行同步操作(1.10)或原子操作(第29条)
可以通过实现来假设终止.[ 注意:这是为了允许编译器转换,例如删除空循环,即使终止无法证明.- 结束说明 ]
所以编译器可以假设你的for循环将终止,并且由于正文是空的,它可以完全优化它.
for
草稿中的引文是从这个问题中复制出来的,并根据我的副本进行了验证.
归档时间:
15 年,5 月 前
查看次数:
338 次
最近记录: