是否可以阻止单个翻译单元或其中一部分的优化?

Is it possible to prevent optimization from a single translation unit, or part of it?

在包含数十个模块的项目中,我们将 O1 作为默认调试优化级别。

有时,我需要较少的优化(即根本不需要优化)。所以我使用 clang 属性 optnone 从优化中排除单个函数。

但是当要排除的函数数量很多时,这就变得很麻烦了。

有没有办法将整个模块排除在优化之外?例如在模块的顶部设置一个 pragma。

Clang 有一个特定于编译器的 pragma 是的,试试:

#pragma clang optimize off
//region of code
#pragma clang optimize on