【问题标题】:gcc disable ALL warnings for a few lines of codegcc 禁用几行代码的所有警告
【发布时间】:2015-01-03 08:09:50
【问题描述】:

我遇到了与 Jonathon Reinhart 在这里描述的相同的问题: Temporarily disable gcc warning on redefinition

那是因为我必须使用第三方库(仅限 C),它会引发大量这样的警告

Warning "__always_inline" redefined [enabled by default]    

我想要的是这样的:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-W???"
  #include "someheader.h"
  #include "otherheader.h"
#pragma GCC diagnostic pop

有没有办法禁用 gcc 警告,默认情况下 启用 带有

#pragma GCC diagnostic ignored

编辑: 这是导致警告的块(文件:compiler.h):

#if defined(__CC_ARM)
#   define __always_inline   __forceinline
#elif (defined __GNUC__)
#   define __always_inline   inline __attribute__((__always_inline__))
#elif (defined __ICCARM__)
#   define __always_inline   _Pragma("inline=forced")
#endif

【问题讨论】:

  • 他们使用这样的保留名称是不礼貌的。你有联系图书馆的供应商吗?您应该要求他们提供适合与 C 编译器一起使用的头文件。或者您可以使用 sed 或类似方法攻击提供的标头,并将宏更改为不使用保留名称。
  • “扫一扫”似乎是解决这个问题的次优解决方案
  • 供应商 (Atmel) 被告知:asf.atmel.com/bugzilla/show_bug.cgi?id=3486 你是对的。清除错误不是最好的解决方案,但修复错误,例如为每个新版本的库一次又一次地重新定义完全相同的 __always_inline 行,就更糟了。

标签: c gcc


【解决方案1】:

我通过取消定义定义了 __always_inline 的所有行来修复它。 :-( 感谢 Jasen 的帮助!

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多