是否有任何方法可以禁用所有在clang或gcc中带有pragma的警告?

是否有任何方法可以禁用所有在clang或gcc中带有pragma的警告?,gcc,warnings,clang,Gcc,Warnings,Clang,GCC和clang允许您使用-w编译以禁用所有警告,但我看不到与之等效的#pragma。我只能看到禁用单个文件的pragma支持 我之所以需要它,是因为我有一些代码,我想用高警告级别编译这些代码,但这些代码必然会编译生成任意警告的第三方代码。您可以用GCC来完成这项工作,几乎可以使用#pragma GCC diagnostic ignored,但不幸的是不是很好,请参阅 问题是,你不能只是“禁用所有”,你必须禁用每一个。另外,对于某些警告,它不起作用(文档也不会告诉您是哪一个…) 我的猜测是,这

GCC和clang允许您使用-w编译以禁用所有警告,但我看不到与之等效的#pragma。我只能看到禁用单个文件的pragma支持

我之所以需要它,是因为我有一些代码,我想用高警告级别编译这些代码,但这些代码必然会编译生成任意警告的第三方代码。

您可以用GCC来完成这项工作,几乎可以使用
#pragma GCC diagnostic ignored
,但不幸的是不是很好,请参阅

问题是,你不能只是“禁用所有”,你必须禁用每一个。另外,对于某些警告,它不起作用(文档也不会告诉您是哪一个…)


我的猜测是,这有点初步,并将(希望)在下一个版本中得到改进。

修改源代码似乎有点奇怪;为什么不通过不同的
Makefile
目标来处理此问题?如果能够在代码中通过pragmas来处理此问题,则可以仅禁用需要禁用的代码周围的警告,而不是禁用整个翻译单元的警告。它还允许您通过使用_Pragma有条件地执行此操作。
Pragma GCC diagnostic ignored“-Wall”
似乎适合我。如果需要,为
-Wextra
添加另一行(因为
-Wall
不是全部)。