我正在看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;
}
此代码编译时没有警告且没有错误。我不能正确理解语法吗?
答案 0 :(得分:4)
要获得所需的错误,请将这些标志传递给gcc:
-std=c90 -pedantic-errors
GNU扩展以及更新的C标准允许在范围内的其他语句之后进行声明。
答案 1 :(得分:3)
你理解语法很好。但是,自K&amp; R天以来,C已经发展,现在语法接受交错声明和陈述。