禁用GCC在几行代码中的所有警告

9

我和Jonathon Reinhart一样遇到了同样的问题,详情请参考这里: 如何临时禁止gcc关于重定义的警告信息

这是因为我必须使用第三方库(仅限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

1
他们使用保留的名称很无礼。你联系过库的供应商了吗?你可以要求他们提供适用于C编译器的头文件。或者你可以使用sed或类似工具攻击提供的头文件,并更改宏以不使用保留的名称。 - Jasen
7
“把问题搁置不谈”似乎是这个问题的次优解决方案。 - Jasen
供应商(Atmel)已被告知:http://asf.atmel.com/bugzilla/show_bug.cgi?id=3486。你是对的。扫除错误并不是最好的解决方案,但是一遍又一遍地修复像每个新版本库中完全相同的 __always_inline 行的重新定义错误甚至更糟糕。 - Johann Horvat
1个回答

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

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