简单的C程序,编译通不过,何解?
vs2005中新建win32空项目,添加了一个file.c文件,写入如下代码:
#include <stdio.h>
#include <stdarg.h>
double average(double v1,double v2,...);
int main(void)
{
double v1=10.5,v2=2.5;
int num1=6,num2=5;
long num3=12, num4=20;
printf("\n Average = %lf",average(v1,3.5,v2,4.5,0.0));
printf("\n Average = %lf",average(1.0,2.0,0.0));
printf("\n Average = %lf",average((double)num2,(double)num1,v1,(double)num4,0.0));
char ch;
scanf("%c",&ch);
return 0;
}
double average(double v1,double v2,...)
{
va_list parg;
double sum=v1+v2;
double value=0.0;
int count=2;
va_start(parg,v2);
while ((value=va_arg(parg,double))!=0.0)
{
sum+=value;
count++;
}
va_end(parg);
return sum/count;
}
编译提示C2143: systax error:missing ';' before ''type 和C2065:'ch':undeclared identifier。定位到了main函数最后的char ch;scanf("%c",&ch);处。我把文件后缀改为.cpp,编译就能通过。将上面的三行printf语句注释掉,编译也能通过。为什么上面的代码就通不过呢?
[解决办法]
vc2005不支持C99
[解决办法]
C函数里的变量定义一定要放在所有执行语句之前,把char ch 放到上面去试试