编译器优化

-O0 -O1 -O2 -O3 -Os -Ofast -Og 编译选项优化差异:

GCC官网

GCC, the GNU Compiler Collection- GNU Project

找到对应的GCC版本,

 

编译器优化_第1张图片

 

可查看不同优化等级编译选项的差异

局部禁用优化:

函数禁用优化

为函数设置__attribute__((optimize(“O0”)))属性

#include 

void __attribute__((optimize("O0"))) blabla(void) {
}

int main(void) {
    blabla();
    return 0;
}

代码段禁用优化

gcc

#pragma GCC push_options
#pragma GCC optimize ("O0") 
// your code
#pragma GCC pop_options

vs

#pragma optimize("", off)
// your code
#pragma optimize("", on)

clang

#pragma clang optimize off
// your code
#pragma clang optimize on

变量禁用优化

使用volatile关键字

你可能感兴趣的:(linux,linux)