【问题标题】:'optimize' attribute directive ignored“优化”属性指令被忽略
【发布时间】:2011-04-02 13:59:42
【问题描述】:

我有一个项目,通过gcc 命令行标志将所有文件的优化设置为“-Os”。但是,我想禁用其中一个源文件中某些方法的优化。为此,我试图为这些方法指定优化属性。但是,gcc 表示它在构建过程中忽略了optimize 属性。有谁知道问题是什么?

class C 
{
public:
    int __attribute__((optimize("-O0"))) foo();
    .
    .
 };

我使用的是 gcc 版本 4.4.3。

【问题讨论】:

    标签: c++ linux optimization gcc attributes


    【解决方案1】:

    删除-。这不是必需的(或可能不是预期的)。

    【讨论】:

    • 试过了。但这并不影响结果。
    • 通常我只会使用 pragma 指令,但在源代码中,而不是在标题中。
    • 它也忽略了#pragma GCC optimize 0
    • @Rajorshi:你需要#pragma GCC optimize ("O0")
    • 嗯。我认为 GCC 也接受前者。无论如何,我尝试了以下方法,但也没有用: #pragma GCC push_options #pragma GCC optimize ("O0") 。 . . #pragma GCC pop_options
    【解决方案2】:

    您可以使用优化编译指示,详见 http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas

    #pragma GCC push_options
    #pragma GCC optimize ("-O0")
    int foo() {
      return bar;
    }
    #pragma GCC pop_options
    

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2016-02-08
      • 2016-06-17
      • 2018-02-06
      • 2013-01-18
      • 1970-01-01
      相关资源
      最近更新 更多