使用 g++ 构建时如何抑制来自某些文件的警告?
How to supress warnings from some files when building with g++?
例如,我正在构建由多个 *.cpp 文件组成的项目,我只需要抑制来自其中一些文件的警告。
我使用 Eclipse 项目中使用的 Makefile。
我该怎么做?
更新:
似乎用于此的诊断编译指示:
这取决于您构建项目的方式和编译器。我假设您使用的是 Linux 并且您使用的是 GCC。如果不是,类似的技术也适用于 Visual Studio 和其他编译器。
如果您有一个可以轻松修改的 Makefile
,您可以提供不同的编译器标志来构建每个文件。禁用特定警告就像在构建行中添加 -Wno-<warning-name>
一样简单,例如:-Wno-unused-local-typedefs
.
如果您不能轻易修改您的 makefile,您可以直接将 #pragma
s 放入您的源代码中。例如,您可以在 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
参考文献:
例如,我正在构建由多个 *.cpp 文件组成的项目,我只需要抑制来自其中一些文件的警告。 我使用 Eclipse 项目中使用的 Makefile。
我该怎么做?
更新:
似乎用于此的诊断编译指示:
这取决于您构建项目的方式和编译器。我假设您使用的是 Linux 并且您使用的是 GCC。如果不是,类似的技术也适用于 Visual Studio 和其他编译器。
如果您有一个可以轻松修改的 Makefile
,您可以提供不同的编译器标志来构建每个文件。禁用特定警告就像在构建行中添加 -Wno-<warning-name>
一样简单,例如:-Wno-unused-local-typedefs
.
如果您不能轻易修改您的 makefile,您可以直接将 #pragma
s 放入您的源代码中。例如,您可以在 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
参考文献: