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;

本文版权归作者所有,谢绝转发,违者必究。

posted @ 2020-02-20 17:58  DigitalPower  阅读(463)  评论(0)    收藏  举报