使用 g++ 构建时如何抑制来自某些文件的警告?

How to supress warnings from some files when building with g++?

例如,我正在构建由多个 *.cpp 文件组成的项目,我只需要抑制来自其中一些文件的警告。 我使用 Eclipse 项目中使用的 Makefile。

我该怎么做?

更新:

似乎用于此的诊断编译指示:

https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html

这取决于您构建项目的方式和编译器。我假设您使用的是 Linux 并且您使用的是 GCC。如果不是,类似的技术也适用于 Visual Studio 和其他编译器。

如果您有一个可以轻松修改的 Makefile,您可以提供不同的编译器标志来构建每个文件。禁用特定警告就像在构建行中添加 -Wno-<warning-name> 一样简单,例如:-Wno-unused-local-typedefs.

如果您不能轻易修改您的 makefile,您可以直接将 #pragmas 放入您的源代码中。例如,您可以在 C++ 文件的顶部添加这样一行:

#pragma GCC diagnostic ignored "-Wno-unused-local-typedefs"

当然,真正的解决办法是修复警告。很少有警告是不值得注意的:经常忽视警告会让你在漫长的过程中更加痛苦运行!

要禁用所有警告,您可以

# Makefile

# disable all warnings
CXXFLAGS += -w

要禁用特定 *.cpp 文件的警告,请尝试为相关目标文件分配 target-specific variables

# Makefile

# disable warnings on foobar.cpp
foobar.o: CXXFLAGS += -w

参考文献: