【GCC】GCC设置部分代码的优化选项

本文介绍了如何在GCC编译器中使用#pragma指令和__attribute__特性,分别针对部分代码设置不同级别的优化,如O0和unroll-loops,以实现灵活的代码优化策略。
摘要由CSDN通过智能技术生成

GCC可以对部分代码设置不同的优化选项,在编译时使用其指明的优化选项,而不用编译命令里指定的优化参数。

有两种方法可以实现该功能。

  1. 使用#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优化级别,最后再恢复之前保存的编译选项。

  1. 使用__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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值