求助,函数声明出现array type has incomplete element type的编译报错
程序代码:
#include<stdio.h> #include<string.h> #define MAXLINE 40 char * s_gets( char * st , int n); int sort_max_value(struct book str[],int n); struct book { char title[MAXLINE]; float value; }; int main() { struct book library[MAXLINE]; int maxbook; scanf("%d",&maxbook); int index; for( index = 0 ; index < maxbook ; ++index) { scanf("%s",&library[index].title); //s_gets( library[index].title, MAXLINE); while( getchar() != '\n') continue; scanf("%f",&library[index].value); } sort_max_value(library,maxbook); printf("highest price: %.1f, %s\n",library[maxbook-1].value,library[maxbook-1].title); printf("highest price: %.1f, %s\n",library[0].value,library[0].title); } char * s_gets( char * st, int n) { char * rev_val; char * find; rev_val = fgets(st,MAXLINE,stdin); if(rev_val) { find = strchr( st , '\n'); if(find) *find = '\0'; else while( getchar() != '\n') continue; } return rev_val; } int sort_max_value( struct book str[],int n) { int i,k; float temp_value; char temp_ch[MAXLINE]; for( i = 1 ; i < n ; ++i) { temp_value = str[i].value; strcpy(temp_ch,str[i].title); for( k = i ; k > 0 && str[k-1].value > temp_value ;--k) { str[k].value = str[k-1].value; strcpy(str[k].title,str[k-1].title); } str[k].value = temp_value; strcpy(str[k].title,temp_ch); } }
代码如上,在dev上是没有报错可以正常编译运行,可以一旦到了学校的OJ上就直接编译报错
贴出报错
程序代码:
a.c:5:32: error: array type has incomplete element type int sort_max_value(struct book str[MAXLINE],int n); ^ a.c:5:27: warning: ‘struct book’ declared inside parameter list [enabled by default] int sort_max_value(struct book str[MAXLINE],int n); ^ a.c:5:27: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] a.c: In function ‘main’: a.c:20:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[40]’ [-Wformat=] scanf("%s",&library[index].title); ^ a.c:26:2: error: type of formal parameter 1 is incomplete sort_max_value(library,maxbook); ^ a.c:26: confused by earlier errors, bailing out Preprocessed source stored into /tmp/ccO6HnKI.out file, please attach this to your bugreport.
感觉是不同的C版本不一样导致的,但是不知道怎么修改(晕)