GCC指定某个函数或某几个函数的优化级别

 

GCC可以使用attribute((optimize(“STRING”)))指定单个函数的优化级别,或者使用#pragma GCC optimize (“string”…)指定该语句之下的所有函数的优化级别。

 

有些时候会希望某个函数或者某几个函数和其他的函数采取不同的优化级别,比如为了调试方便,或者为了避免编译乱序。这时候可以使用GCC的两个特性来完成。attribute((optimize(“STRING”)))可以指定单个函数的优化级别,如果有多个函数要指定的话,可以重复使用attribute((optimize(“STRING”))),或者使用#pragma GCC optimize (“string”…),#pragma GCC optimize (“string”…)语句下部的所有函数将使用该语句指定的优化级别。

 

attribute((optimize(“STRING”)))的例子,add函数使用O0优化级别,sub函数使用O2优化级别。

 

// 首先用__attribute__声明函数

int add(int a, int b) __attribute__((optimize("O0")));

// 然后再定义函数,声明和定义必须分开,否则编译错误

int add(int a, int b)

{

}

int sub(int a, int b) __attribute__((optimize("O2")));

int sub(int a, int b)

{

}

 

 

pragma GCC optimize (“string”…)的例子,pragma语句下面的add和sub函数都使用O3优化级别。pragma语句上面的div函数使用命令行指定的优化级别。

 

int div(int a, int b)

{

}

#pragma GCC optimize ("O3")

int add(int a, int b)

{

}

int sub(int a, int b)

{

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值