有没有办法告诉编译器不要优化代码的选择性部分?我知道你可以告诉编译器不要使用 volatile 优化掉某些变量,但是整个代码块呢?
在大多数情况下,是的,但确切的方法取决于您的特定编译器。
通常会是这样的:
#pragma optimize(off)
任何与优化器相关的内容都完全超出了标准的范围。 标准的唯一作用是规定行为,但编译器可以进行任何不违反所需行为的优化,或者根本不进行优化。
g++ 文档:
#pragma GCC optimize
attribute((optimize))
MS Visual C++ 文档(到达那里后选择版本):
#pragma optimize