【问题标题】:Werror ignore certain filesWerror 忽略某些文件
【发布时间】:2011-03-21 08:46:03
【问题描述】:

我想知道 gcc/g++ 中的 werror 是否可以排除某些文件(我没有要修改的源代码的文件),以便我可以在不受限制的状态下继续使用 werror。

【问题讨论】:

  • 如果您没有源代码...那么您应该已经有一个库可以链接到。还是你的意思是头文件?
  • Err...如果您没有源代码,那么 GCC 不会抱怨!

标签: c++ c gcc


【解决方案1】:

使用pragma directives 和较新的(我认为是4.2)版本的gcc 在包含某些标头之前关闭-Werror。

您可能希望接受之前问题的答案。

【讨论】:

    【解决方案2】:

    我唯一的想法是编译您可以使用 -Werror 单独修改的文件,然后将它们与不使用 -Werror 的其他对象/库文件链接。

    【讨论】:

    • 如果它们只是头文件呢:-/
    【解决方案3】:

    @Sam Miller 已经提供了有关如何执行此操作的参考文档...

    您可以使用#pragma GCC diagnostics warning "-W<kind>" 在某些警告上暂时禁用-Werror。例如:

    #pragma GCC diagnostic push
    # pragma GCC diagnostic warning "-Wreturn-type"
    # pragma GCC diagnostic warning "-Wmissing-braces"
    # include "legacy-crap.h"
    #pragma GCC diagnostic pop
    

    较新的gcc 将在括号中打印诊断类别的名称作为警告/错误的一部分:

    warning-test.c:11:1: warning: return type defaults to ‘int’ [-Wreturn-type]
    

    或

    warning-test.c:11:1: error: return type defaults to ‘int’ [-Wreturn-type]
    

    这可用于准确选择在处理您无权更改的第三方废话期间应被视为警告而不是错误的确切诊断。我不知道禁用所有警告的捷径("-Wall" 不会对上述#pragma 产生预期效果),但我认为在这里明确表示也很好。

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2021-08-08
      • 2010-10-30
      • 2012-06-08
      • 2011-06-20
      相关资源
      最近更新 更多