我想使用g ++和-Werror,所以我现在要禁用我无法控制的第三方库的警告.http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html提供的解决方案非常有效,允许简单地用pragma包装第三方标题.不幸的是,在涉及模板的某个设置中,这对我来说不再适用.我创建了以下最小的示例,其中此方法无法按预期工作:
源文件main.cpp
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include "hdr.hpp"
#pragma GCC diagnostic error "-Wunused-parameter"
int main() {
return mytemplatefunc(2) + mystandardfunc(3); // will print ONLY ONE warning
}
Run Code Online (Sandbox Code Playgroud)
和标题hdr.hpp
template<typename T>
int mytemplatefunc(T t) {
return 42;
}
int mystandardfunc(int i) {
return 53;
}
Run Code Online (Sandbox Code Playgroud)
使用Makefile编译
CPPFLAGS+=-Wunused-parameter -Werror
main: main.cpp
Run Code Online (Sandbox Code Playgroud)
将产生以下编译器错误
g++ -Wunused-parameter -Werror main.cpp -o main
In file included from main.cpp:3:
hdr.hpp: In instantiation of ‘int mytemplatefunc(T) [with T = int]’:
main.cpp:29: instantiated from …Run Code Online (Sandbox Code Playgroud)