GCC - 仅在特定函数上启用编译器标志

时间:2012-10-17 01:51:54

标签: c gcc

在我正在研究的项目中,在我正在尝试优化的大文件中有一个四重嵌套for循环我认为将从编译器展开-funroll-all-loops中受益。但是,当我将此标志添加到编译器时,它会将其他循环展开到文件的其余部分,并使整个程序运行得更慢。有没有办法(可能通过#pragma)将编译器标志仅应用于文件中的某些函数而不是整个文件?

提前致谢。

2 个答案:

答案 0 :(得分:6)

GCC function attribute optimize可用于为单个函数设置优化选项:

void foo(int bar) __attribute__((optimize ("unroll-all-loops")))
{
}

答案 1 :(得分:1)

我建议将该特定函数移动到单独的.c文件中,该文件可以使用您想要使用的额外选项进行编译。这可能需要创建一个“foo_private.h”样式头,以便在现有.c文件和新文件之间共享,允许它们共享在原始.c文件中声明为静态的任何变量