-1
我有如下編譯問題。頭文件abc.h
包含在abc.c
中。爲什麼這是相沖突的類型聲明?
在頭文件中,我有這個
extern char **foo;
在源文件中
,我有這個
char *foo[] = { ".mp3", ".mp4" };
但我從GCC得到一個編譯錯誤:
abc.c:23:7: error: conflicting types for ‘foo’
In file included from abc.c:18:0:
abc.h:64:15: note: previous declaration of ‘foo’ was here
爲什麼我得到這個錯誤?
@KingWeeWee事情在函數聲明中的工作方式不同:-) – cnicutar
我的意思是,char * p與char [] p相同。好的,謝謝 – KingWeeWee
@KingWeeWee:你錯了,他們不是同一類型。當編譯器看到一個外部符號的類型爲「未指定大小的X數組」時,它實際上要鏈接的是該數組的地址,該數組的起始地址與其第一個元素相同。不過,該類型與指向該第一個元素的指針的類型不同。 –