以前用的是VC6.0,一个很不方便的地方就是所有变量都得在函数开头定义,这样在编到某一部分的时候,如果想定义变量,得翻到开头,再翻回来,有时候都找不着代码在什么地方了。听说VS2003支持C99标准,而C99标准是允许变量放在任何位置定义的。后来又听说VS2005比VS2003好,于是就下载安装了VS2005.把过去的程序拿来一编译,还好,没有任何问题,编译一次成功。可是,当我想在一个函数的执行语句后面定义变量的时候,一编译又报错了!真是崩溃了!VS2005难道不支持C99标准?难道不能在任意位置定义变量?

解决方案 »

  1.   

    一般在case分支里定义会有问题,解决办法是增加大括号包含起来即可
      

  2.   

    我的不是在case分支里定义的,代码如下:
    input4:
       xsnum = 0;
       int iii;
       memset(xs, 0, sizeof(xs));

    其中报错的是int iii;这条语句是我故意加上去的,看看能不能在执行语句中定义变量的,结果提示:3>e:\a1\zywb\zywb\zywb.c(266) : error C2143: syntax error : missing ';' before 'type'
    第266行就是int iii;
      

  3.   


    对了,我的是编译成C,文件扩展名为zywb.c也完全是C格式的。
      

  4.   

    或者C和C++有区别?是不是在VS2005中,如果是C++格式的,变量放在任何地方都行,而C格式的则会出问题?
      

  5.   

    可以的,在vc6.0里加上改成cpp后加上include “stdafx。h”就可以了
      

  6.   

    请问我以后编程的时候,可不可以建立一个扩展名为CPP的C++文件,但是编写的内容完全是C的内容呢?
      

  7.   

    要是使用C++不兼容C的话就不行了,其他无所谓。VS2010都不支持C99
      

  8.   

    跟后缀名关系不大吧
    选中文件右键 属性-》 C/C++ -> 高级  -》编译为 里面可以选编译为C 或者C++
    C++ 是支持任意地方定义变量,C则不行
      

  9.   

    哦!谢谢大家!问题可能就是:大家说VS2005变量可以在任何位置定义是指的C++,而C则是不支持的。
      

  10.   

    的确如此
    VC6 - VS2010 都是这样子的。