无法在任何操作后定义变量?
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: 注释也失效了,编译前去掉了
我的 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: 注释也失效了,编译前去掉了