1

有没有办法将代码块或函数标记为编译器优化功能的排除部分?

我有一个错误,只有在优化功能开启时才会出现。我对它可能在哪里有一些猜测,这个宏可以提供很好的帮助。

4

2 回答 2

4

如果我看到其中包含的代码,我会非常担心#pragma GCC optimize "O0"。我肯定会要求任何与我一起工作的人就为什么有必要做出非常明确的评论,并且可能会向编译器供应商报告编译器错误,这就是它无法与优化一起工作的原因。

如果你甚至考虑向内核邮件列表或类似的提交一些东西,我会确保穿着三层或四​​层石棉,因为你的火焰会很强烈。

正确的做法是找出解决方法,说明为什么您的代码在优化时无法正确编译。如果您需要,您的代码可能有问题 - 通常它依赖于“您认为编译器如何做某事”,这在您优化代码时不会发生。那是糟糕的编码,绝对不应该通过禁用编译器优化来解决。

于 2012-12-27T16:31:23.693 回答
2

在 gcc 中,您可以optimize在函数级别使用 pragma 来避免优化。

#pragma GCC optimize "O0"可应用于函数以防止对该函数进行优化。但我不确定是否有办法防止代码块被优化。

因此,您可以对整个程序进行整体优化设置,这将使用给定的优化函数覆盖该设置optimize

于 2012-12-27T15:50:08.910 回答