GCC可以对部分代码设置不同的优化选项,在编译时使用其指明的优化选项,而不用编译命令里指定的优化参数。
有两种方法可以实现该功能。
- 使用#pragma指令
参数值可以是数字,也可以是字符串。数字就是优化级别。以O开头的字符串被认为是一个优化选项,其他的选项以-f开头。
1 #pragma GCC push_options
2 #pragma GCC optimize ("O0")
3 ...your code...
4 #pragma GCC pop_options
1 #pragma GCC push_options
2 #pragma GCC optimize ("unroll-loops")
3 ...your code...
4 #pragma GCC pop_options
Function Specific Option Pragmas,在特定代码前保存当前的编译选项,然后对特定的代码使用O0优化级别,最后再恢复之前保存的编译选项。
- 使用__attibute__属性
1 # define OPTIMIZE_ZERO __attribute__ ((__optimize__ ("-O0")))
2 # define OPTIMIZE_UNROLL __attribute__ ((__optimize__ ("-funroll-loops")))
3
4
5 OPTIMIZE_ZERO int main(void)
6 {
7 ......
8 }
9
10 OPTIMIZE_UNROLL int test(void)
11 {
12 ......
13 }
原文地址:https://www.cnblogs.com/DF11G/p/14421342.html