【发布时间】:2014-05-05 10:03:42
【问题描述】:
在 C++03 标准 1.9/6 中有 可观察行为的定义
抽象机器的可观察行为是它对易失性数据的读取和写入顺序以及对库 I/O 函数的调用。
并且标准详细解释了编译器在进行优化时必须保留可观察的行为。
但是,我正在查看的 C99 草案中没有这样或类似的定义。唯一提到可观察行为的是 6.7.3/7
restrict 限定符(如寄存器存储类)的预期用途是提升 优化,并从符合标准的程序中删除限定符的所有实例 不改变其含义(即可观察的行为)
在优化 C99 程序时,是否有编译器必须保留的确切定义?
【问题讨论】:
标签: c c99 compiler-optimization language-lawyer