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

Can't define variables after any operation?

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

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

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

-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: 注释也失效了,编译前去掉了