使gcc警告“跳转到标签交叉变量的初始化”

tok*_*101 2 c gcc

默认情况下,gcc在编译.c文件时不会抱怨跳过变量初始化,而在编译.cpp文件时会抱怨。我要它在编译C文件时抱怨。有没有简单的方法可以做到这一点?

例如,.c中的以下代码不会产生任何警告/错误,而在.cpp中,它将产生:

int main()
{
        goto out;
        int i = 0;
out:
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果:

int main()
{
        goto out;
        int i = 0;
out:
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

mel*_*ene 5

使用-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;
             ^
Run Code Online (Sandbox Code Playgroud)