vc6编译器问题?
[code=C/C++][/code]#include<stdio.h>
#include<stdlib.h>
merge(int *ntest,int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
//int m=p; 在这里就通过
int *left=malloc(sizeof(int)*(n1+1));
int *right=malloc(sizeof(int)*(n2+1));
int i,j;
for(i=0;i<n1;i++)
left[i]=ntest[p+i];
for(j=0;j<n2;j++)
right[j]=ntest[q+j+1];
left[n1]=1000;
right[n2]=1000;
//int m=p; 在这里就报错
i=0,j=0;
for(m;m<=r;m++)
{
if(left[i]<=right[j])
{
ntest[m]=left[i];
i++;
}
else{
ntest[m]=right[j];
j++;
}
}
free(left);
free(right);
}
mergesort(int *ntest,int m,int n)
{
int p;
if(m<n)
{
p=(m+n)/2;
mergesort(ntest,m,p);
mergesort(ntest,p+1,n);
merge(ntest,m,p,n);
}
}
int main()
{
int i;
int a[8]={5,2,4,7,1,3,2,6};
mergesort(a,0,7);
for(i=0;i<8;i++)
printf("%d \n",a[i]);
return 0;
}
为什么?
[解决办法]
1.VC6也叫VC98 以.c结束的文件默认为C语言文件,.cpp结束的文件才是c++文件
2.既然是98年出来的东东,它是不支持C99标准的。。。。
C语言C89标准规定,变量声明部分必须放在前面。。
C99标准C语言的话,就没这个规定了。。。
VC6不支持C99标准,想在后边定义变量,你把你文件的扩展名改成.cpp可以解决。。。