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