默认情况下,gcc 在编译 .c 文件时不会抱怨跳过变量初始化,而在编译.cpp文件时会这样做。我希望它在编译 c 文件时抱怨。有没有简单的方法可以实现这一目标?
例如,下面的 .c 代码不会产生任何警告/错误,而在 .cpp 中它将:
int main()
{
goto out;
int i = 0;
out:
return 0;
}
结果:
gec@ubuntu:~/work/test/json_test$ gcc test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:5:1: error: jump to label ‘out’ [-fpermissive]
out:
^
test.cpp:3:7: note: from here
goto out;
^
test.cpp:4:6: note: crosses initialization of ‘int i’
int i = 0;
^
使用-Wjump-misses-init
选项(如果您希望它是硬错误,请使用-Werror=jump-misses-init
选项(:
$ gcc -Wjump-misses-init try.c
try.c: In function 'main':
try.c:3:9: warning: jump skips variable initialization [-Wjump-misses-init]
goto out;
^~~~
try.c:5:1: note: label 'out' defined here
out:
^~~
try.c:4:13: note: 'i' declared here
int i = 0;
^