我的C语言老师声称所有变量必须在之前任何操作定义。我可以在某种程度上回想起它是C的一个非常古老的特征(不晚于1990年),但我无法用GCC 7.2.0重现它。
我的老师声称:
int main(){
int a; /* Valid */
a = 1; /* An operation */
int b; /* Invalid because an operation has already occurred */
return 0;
}
我尝试使用
进行编译gcc test.c -std=c89 -Wall -Wextra -pedantic
但它没有错误,甚至没有警告。
我如何验证(或证明错误)该陈述?
答案 0 :(得分:4)
使用-pedantic-errors
进行编译,如下所示:
gcc test.c -std = c89 -Wall -Wextra -pedantic-errors
你应该看到这个错误(在未使用的变量警告中):
test.c:4:5: error: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
int b;
^~~
在GCC 7.20。
PS:评论也是无效的,我在编译前删除了它们。