海湾合作委员会的订购保证

Mar*_*ten 6 c gcc

我碰巧挖掘C并锁定自由编程.摆弄它我想知道gcc能给我一个保证程序执行的方式与我写下来完全相同的方式,并且在某个步骤中没有执行寄存器优化并且其顺序中没有改变操作.

正如我目前所理解的那样,它保证了内存操作以完全相同的顺序发生,并且方法调用以及它们自身和内存操作以相同的顺序发生.在重新排序之间可能会发生.

可以使用volatile关键字关闭寄存器优化.

是否有任何其他保证或角落案件C,尤其是gcc暗示的?

Kla*_*aus 1

如果您的代码依赖于不重新排序操作并且不进行任何其他优化,那么它只是“未定义的行为”。

如果您寻找这样的保证,您只需寻找一个保证,即您编写的损坏的程序可以正确执行。您应该使用您所使用的语言所代表的语义。如果您需要假设该语言如何在给定操作系统和机器上实现操作,那么您完全走错了路!

如果您实际上对实际编译器版本和使用的底层操作系统有某种保证,则该功能将无法保证这一点!所以“保证”这个词也不是真的。如果必须的话,简单的答案是:根本没有任何保证!该语言具有语义,并且编译器保证实现它。根本就没有更多!