坑爹呀,使用VS2010调试代码,写程序如下:
找到原因了: http://blog.163.com/zhaojie_ding/blog/static/17297289520115210564890/
不赚钱,累的要死,古老的语言,C89也挺好的!!!
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标准支持的!
不赚钱,累的要死,古老的语言,C89也挺好的!!!