我有一段代码,当我以这种形式(带有-Wjump-misses-init
标志)写它时编译得很好:
int some_function(void) { ... if (is_error) goto error; int a; a = 1; return a; error: return 666; }
但是当我以这种形式编写相同的函数时,我在编译时得到以下警告(:
int some_function(void) { ... if (is_error) goto error; int a = 1; return a; error: return 666; } test.c: In function 'some_function': test.c:15:17: warning: jump skips variable initialization [-Wjump-misses-init] test.c:21:1: note: label 'error' defined here test.c:17:13: note: 'a' declared here
当我a
在同一行宣布和初始化时,为什么GCC会给我这个警告?对我来说似乎有点奇怪?这些例子是荒谬的,但我担心我不能自由地泄露真正的代码片段.我在Debian Wheezy 7.3上运行GCC 4.7.2.
编辑:无效拼写错误