是否有可能阻止单个或部分翻译单元的优化?

问题描述

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

有时候,我需要进行次优的优化(即完全没有优化)。因此,我使用clang属性optnone将单个函数排除在优化之外。

但是当要排除的功能数量很大时,这将变得很麻烦。

有没有一种方法可以将整个模块排除在优化之外?例如,在模块顶部设置一个编译指示。

解决方法

Clang具有特定于编译器的pragma是的,请尝试:

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