使用仅语法参数切换警告



我有一个关于g++和gcc之间编译的问题。

如果我写这段代码:

int main(int args, char* argv[]){
    return 0;
}

并编译为:g++ -fsyntax-only -Wall -Wextra -Werror

无论文件具有.c.cpp扩展名,它都不会抱怨未使用的参数(argsargv(。

-Wunused选项仅在我编译具有.c扩展名的文件并gcc时才有效。

所以我的问题是:是否可以在所有其他情况下启用带有fsyntax-only参数的警告?

提前感谢您的任何回复

不,它不是,-fsyntax-only只检查语法。

请求或禁止显示警告的选项

-fsyntax-only

检查代码的语法 错误,但除此之外不要做任何事情。

这种异常似乎是 g++ 编译器的错误。OP的G++ 5.4 证实了观察结果,但 G++ 6.3 给出了预期警告:

$ g++-6 -fsyntax-only -Wall -Wextra -Werror test.cpp 
test.cpp: In function ‘int main(int, char**)’:
test.cpp:1:14: error: unused parameter ‘args’ [-Werror=unused-parameter]
 int main(int args, char* argv[]){
              ^~~~
test.cpp:1:31: error: unused parameter ‘argv’ [-Werror=unused-parameter]
 int main(int args, char* argv[]){
                               ^
cc1plus: all warnings being treated as errors

最新更新