我喜欢用-Wall编译我的代码,有时甚至是-dantantic。它部分是一种风格的东西,部分是它偶尔发出非常非常有用的警告(例如使用=而不是==)。
然而,我的一些标题的作者显然不是这样的粘合剂。使用两个警告级别中的任何一个进行编译会产生巨大的输出混乱,完全违背了首先编译这种方式的目的。
那么如何让编译器忽略这些警告呢?
答案 0 :(得分:8)
除JS Bangs' answer之外,您可以让GCC将其视为system headers,这会对这些标头禁用所有警告(#warning
指令除外)。
如果-isystem
开关无效,您可以使用仅包含相应行的更简单的标头包装所有违规标头:
#pragma GCC system_header
答案 1 :(得分:7)
在调用GCC时,使用-isystem
代替-I
来提供有问题标头的路径应该会对这些标头的警告进行静音。请参阅GCC docs或this SO question。
答案 2 :(得分:1)
使用适当的#pragma
在包含错误标头之前禁用警告,然后重新启用警告。 Docs on the GCC pragmas.
答案 3 :(得分:0)
看起来它们是“你的”标题,意味着你可以自己修改它们或者让“作家”为你做。如果你想追求无警告生活,那就修好那些标题:)。
或者你当然可以使用pragma's,但它们是反式和丑陋的:)