c语言 - 让 gcc 警告"jump to label crosses initialization of variable"



默认情况下,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;
^

最新更新