【发布时间】:2014-05-14 20:54:02
【问题描述】:
我正在查看 K&R 上的 C 语法,我发现了这个:
compound-statement:
{ declaration-list opt statement-list opt }
declaration-list:
declaration
declaration-list declaration
statement-list:
statement
statement-list statement
这意味着我们不能在语句之后进行声明。但是我经常这样做:
#include <stdio.h>
int main()
{
printf("Lets use a new block");
{
int a=1;
printf("%d",a);
int b=3;
printf("%d",b);
}
return 0;
}
此代码编译时没有警告和错误。我没有正确理解语法吗?
【问题讨论】:
-
这是重复的,是的,过去是规则,现在已经放宽了。
-
启用更多警告,你会得到你所期望的(
gcc-- 凭记忆 ---pedantic应该这样做)。 -
K&R 是一本很棒的书,但它不是最近的一本。