任何操作后都无法定义变量?

时间:2017-09-12 07:36:52

标签: c gcc compiler-errors obsolete

我的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

但它没有错误,甚至没有警告。

我如何验证(或证明错误)该陈述?

1 个答案:

答案 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:评论也是无效的,我在编译前删除了它们。