-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

一个是指针数组,另一个是指向指针的指针。非常不同的对象。尝试将其声明为数组:

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

extern char[]并且extern char *是两个不同的

而对于extern声明应该与一个定义相匹配。

extern char **foo;

火柴

char **foo;

不匹配

char *foo[];

一样

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