我是c語言的新手。所以,我從Brian Kernighan和Dennis Ritchie的書(The C programming language)中複製了代碼。我正在複製pg32的例子。當我得到這個錯誤:C程序 - 錯誤:與'char line []'[-fpermissive]'之前的外部decl類型不匹配
pg32.c: In function ‘int main()’:
pg32.c:16:23: error: type mismatch with previous external decl of ‘char longest []’ [-fpermissive]
pg32.c:7:6: error: previous external decl of ‘char longest [1000]’ [-fpermissive]
pg32.c: In function ‘int getl()’:
pg32.c:33:20: error: type mismatch with previous external decl of ‘char line []’ [-fpermissive]
pg32.c:6:6: error: previous external decl of ‘char line [1000]’ [-fpermissive]
pg32.c: In function ‘void copy()’:
pg32.c:50:20: error: type mismatch with previous external decl of ‘char line []’ [-fpermissive]
pg32.c:6:6: error: previous external decl of ‘char line [1000]’ [-fpermissive]
pg32.c:50:31: error: type mismatch with previous external decl of ‘char longest []’ [-fpermissive]
pg32.c:7:6: error: previous external decl of ‘char longest [1000]’ [-fpermissive]
我重新輸入代碼4次,同樣的錯誤。我不確定,但我認爲這是一個遺留問題。
#include<stdio.h>
#define MAXLINE 1000
int max;
char line[MAXLINE];
char longest[MAXLINE];
int getl(void);
void copy(void);
int main()
{
int len;
extern int max;
extern char longest[];
max =0;
while((len =getl()) > 0)
if(len > max){
max = len;
copy();
}
if(max > 0)
printf("%s", longest);
return 0;
}
int getl(void)
{
int c, i;
extern char line[];
for(i =0; i < MAXLINE-1 &&
(c=getchar()) != EOF && c != '\n'; ++i)
line[i] =c;
if(c=='\n'){
line[i] = c;
++i;
}
line[i] ='\0';
return i;
}
void copy(void)
{
int i;
extern char line[], longest[];
i=0;
while((longest[i] = line[i]) != '\0')
++i;
}
我很感激任何幫助。
你使用什麼編譯器?這[編譯](http://ideone.com/7k1Vw)與gcc-4.3.4 – 2012-04-13 02:47:10
gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu4) – agape 2012-04-13 02:58:48