读书人

简单的C程序编译通不过何解?该怎

发布时间: 2012-05-15 14:35:29 作者: rapoo

简单的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 放到上面去试试

读书人网 >C语言

热点推荐