C: printf放在int定义之前引发visual studio编译失败 error C2143

用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;

猜你喜欢

转载自www.cnblogs.com/dongshenscut/p/12336743.html