error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

坑爹呀,使用VS2010调试代码,写程序如下:

int A(){

  int x=1;
  if(x>2) return;
  int y1,y2;
  y1=10;
  y2=11;
}

妈的,如此简单的代码,怎么调试都无法通过,报error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
怎么看都没有错误呀!!
后来,经人指点,原来变量要定义在函数的开始,不能在语句之后:

int A(){

  int x=1;
  int y1,y2;
  if(x>2) return;
  y1=10;
  y2=11;
}
这样才不会报错!!!
神呀,花了几个小时才搞明白!!!
这么坑爹呀!
这是什么道理???


找到原因了: http://blog.163.com/zhaojie_ding/blog/static/17297289520115210564890/

C99支持混合声明(mix declarations and code,其实也就是解除了原先必须在block的第一条语句之前声明变量的限制:现在C99也和C++一样,可以在代码中随时声明变量了。
不过我看很多人尤其是初学者,可能压根不晓得原来C99之前是不能在代码里混着声明变量啊。。。因为大部分C编译器其实都扩展支持了这个特性(比较严格的也最多打个warning罢了),而N多菜鸟用C垒代码,都是觉得缺了个变量就顺手定义一下然后就继续往下垒了,能编译过就算胜利~~不过现在倒是好了。。如果有老师傅鄙视你随地声明变量,你可以理直气壮地告诉他:这是C99标准支持的!

好像大家对于C99不是很欢迎,因为C99完全脱离了C++,不兼容了,所以不讨大家喜欢吧,而且哪个厂商还有心情去搞C的编译器呢?
不赚钱,累的要死,古老的语言,C89也挺好的!!!


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值