今天遇到一個情況,實在想不通。
這段代碼在VC6.0的.c中錯誤提示【error C2143: syntax error : missing ';' before 'type'】。但在.cpp中卻順利通過。求解這是怎麼回事
#include <stdio.h>
#include <stdlib.h>
#define M 14
void NONO();
void fun( char (*t)[M], int *a ,int *c)
{
*a=0;
*c=0;
int i, j; //錯誤在這裡
for(i=0;i<M;i++)
for(j=0;j<M;j++)
if(t[i][j]=='A')(*a)++;
else if(t[i][j]=='C')(*c)++;
}
void get( char (*s)[M] )
{ int i, j;
for( i=0; i<M; i++ )
{ for( j=0; j<M; j++)
{ s[i][j]=65+rand()%12; printf( "%c ",s[i][j]); }
printf("\n");
}
}
int main()
{ char a[M][M];
int x, y;
get (a);
fun ( a, &x,&y );
printf("A = %d C = %d\n",x,y);
return 0;
}
根據C89標准,c語言局部變量定義必須在其他語句前面,用微軟的編譯器都會這樣(包括VS2010,VS2013.2015沒試)用GCC編譯器則需要指定C99標准:
gcc -std=c99 -o a a.cpp