使用gcc但使用Clang没有关于模板函数中未使用参数的警告

时间:2014-03-14 13:34:31

标签: c++ templates gcc clang

我最近测试用clang而不是gcc构建我的代码。它失败了,因为我使用 -Werror ,因为模板函数中有一个未使用的参数。使用gcc,这不会发生。

这是一个小例子:

template <typename REAL> int f(int a){return 42;}

int g(int a){return 42;}

用clang编译它给我的结果我希望:

$clang -c UnusedParam.cpp  -Wunused-parameter
>UnusedParam.cpp:1:36: warning: unused parameter 'a' [-Wunused-parameter]
> template <typename REAL> int f(int a){return 42;}
>                                   ^
>UnusedParam.cpp:3:11: warning: unused parameter 'a' [-Wunused-parameter]
> int g(int a){return 42;}

Gcc仅报告第二个函数中未使用的参数。

$gcc -c UnusedParam.cpp  -Wunused-parameter
>UnusedParam.cpp:3:5: warning: unused parameter ‘a’ [-Wunused-parameter]
> int g(int a){return 42;}

有没有办法强制执行类似的行为?我希望gcc也能生成未使用的参数警告。

编译:

  • Clang:Version 3.3(branches / release_33 183898)
  • Gcc:Version 4.8.1 20130909

1 个答案:

答案 0 :(得分:4)