用printf放在int定义之前引发visual studio编译失败;
出现错误: error C2143: 语法错误 : 缺少“;”(在“类型”的前面)?
查了很久没弄明白;后来发现定义全部要放最前面。
-----------------------------------------------------------
详细说明
标准C99的要求。
最标准的C语言要求所有的局部变量定义必须放在函数的最开始,局部变量定义完成之后,才可以写一些有实际意义的操作语句。
只是后续C++在扩展的时候,将这个限制取消了。后续的一些C语言编译器也没有严格执行这个要求,所以同一段代码有的编译器可以执行,有的就不可以。
但是为了扩展性,推荐写的C语言代码还是遵从C99的标准吧。
例如:这是符合标准C99,任何编译器都可以执行
1
2
3
4
|
int
a;
int
c;
printf
(
"%d\n"
,a);
c=a;
|
更改一下顺序,这段代码标准C99编译器是编译不通过的,但是C++的编译器就允许
1
2
3
4
|
int
a;
printf
(
"%d\n"
,a);
int
c;
c=a;
|