无限循环编译器优化

时间:2021-01-24 10:41:41

标签: c++

我有以下代码片段:

foo();
std::cout << "Foo";
loop();

其中 loop 是一个不会终止的函数,因为它运行到某个无限循环中(不是故意的)。但是,似乎我的程序在不打印输出(“Foo”)的情况下运行到无限循环中。是否允许编译器以这种方式更改代码的行为?

foo()loop() 都不会干扰标准输出。

很遗憾,我无法提供有关设置的更多具体信息。所以我只想知道在调用 loop() 之前是否需要有一个错误(在代码或编译器中),或者编译器是否可以假设后面的代码没有错误?

编辑:此行为的原因可能是缺少 std::flush。因此,最初的问题对我来说不再那么有趣(但它可能仍然是一个可以问的问题)。

0 个答案:

没有答案