-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

なぜこのエラーが発生するのですか?

4

2 に答える 2

5

1 つはポインターの配列で、もう 1 つはポインターへのポインターです。非常に異なるオブジェクト。配列として宣言してみてください:

extern char *foo[];
于 2013-04-02T15:58:33.693 に答える
0

extern char[]extern char *は 2 つの異なる

また、extern宣言は 1 つの定義に一致するはずです。

extern char **foo;

マッチ

char **foo;

一致していません

char *foo[];

同じこと

extern char *foo[];  /* matches */  
char *foo[];
于 2013-04-02T16:22:18.280 に答える