是否可以阻止单个翻译单元或其中一部分的优化?
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
在包含数十个模块的项目中,我们将 O1
作为默认调试优化级别。
有时,我需要较少的优化(即根本不需要优化)。所以我使用 clang 属性 optnone
从优化中排除单个函数。
但是当要排除的函数数量很多时,这就变得很麻烦了。
有没有办法将整个模块排除在优化之外?例如在模块的顶部设置一个 pragma。
Clang 有一个特定于编译器的 pragma
是的,试试:
#pragma clang optimize off
//region of code
#pragma clang optimize on