C中的void (*xmlHashScanner)(void *payload, void *data, xmlChar *name)
和void *xmlHashScanner(void *payload, void *data, xmlChar *name)
之间的区别是什么?
他们为什么表现不同?void(* xmlHashScanner)和void * xmlHashScanner之间的区别
xmlHashScanner
是库libxml2
中的用户定义函数。
当我试图重新定义这个函数有一点不同的原型:的void *xmlHashScanner
代替void (*xmlHashScanner)
我有以下错误:
error: ‘xmlHashScanner’ redeclared as different kind of symbol
void *xmlHashScanner(void *payload, void *data, xmlChar *name)
^
In file included from /usr/include/libxml2/libxml/parser.h:18:0,
from /home/solar/Bureau/parser/src/diam_dict.c:12:
/usr/include/libxml2/libxml/hash.h:88:16: note: previous declaration of ‘xmlHashScanner’ was here
typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
我不知道什么是他们两个人之间的区别。
你能解释不同的行为? –
@ScottHunter我说他们是不同的,因为一个编译而另一个不是。 – cheater
'void(* xmlHashScanner)()'是一个指向void函数的指针。 'void * xmlHashScanner()'是一个返回void指针的函数。 – Arkadiy