2014-04-24 38 views
0

我有以下声明的.h文件中:重新声明为不同意义的符号错误的

typedef SetElement (*copySetElements)(SetElement); 
typedef void (*freeSetElements)(SetElement); 
typedef int (*compareSetElements)(SetElement, SetElement); 

和另一.h文件中有以下delarations:

SetElement copySetElements (SetElement element); 
    void freeSetElements (SetElement element); 
    int compareSetElements (SetElement element1, SetElement element2); 

而我得到的错误:重新声明为不同种类的符号

在第二个.h文件(其中我decalared函数)

一旦我改变了他们的名字,它消失了。为什么?

+0

给出函数指针声明的一个可能的目标* * *不同*名称,所以没有名称冲突。一个简单的方法是将一个单词附加到用于函数指针的标识符上。像“copySetElementsFunctionPointer”一样。一些程序员喜欢“fpCopySetElements”。选一个。 –

回答

1

Typedefs与函数和全局变量共享相同的名称空间。

当您为两个不同的事物使用相同的名称时,编译器不会知道您的意思。所以它会给出一个错误。

相关问题