“#pragma GCC optimize ("O3")”是什么意思?

20

我在这个项目的源代码中看到了一个函数之前的这行代码。我想知道它有什么用处?

#pragma GCC optimize ("O3")

void somefunction()
{
  ....
}

请求解释指令中使用的每个参数。

感谢和问候。


1
请阅读gcc文档中的#pragma部分! - Klaus
#pragma 始终是实现定义的。请参考您的编译器文档 - DevSolar
1
@DevSolar:标题和标志显示gcc :-) - Klaus
1
请求大家尝试简单搜索事物,而不是要求个性化定制的解释。 - underscore_d
1个回答

18

Pragma是实现特定的,但在这种情况下(gcc),它将优化级别设置为3(高),类似于在命令行中使用-O3 的效果。

有关gcc优化级别的详细信息以及响应的各个标志,请参见此处


1
这似乎有点微妙 - 它类似于在命令行上使用-O3,但并不等同。特别是,它似乎没有启用诸如内联之类的过程间优化。在godbolt上的示例 - 实际上使用-O3会导致please_inline_me()被内联,但#pragma GCC optimize ("O3")则不会。 - Nate Eldredge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接