预期 'void (**)(void *, const char *)' 但参数类型为 'void (*)(void *, const char *)
expected 'void (**)(void *, const char *)' but argument is of type 'void (*)(void *, const char *)
我想不通
void (**)(void *, const char *)
/* ^^ why are there 2 asterisks here?
意思是,它是一个指向函数的指针,但我没能
确切的错误信息是
expected 'void (**)(void *, const char *)' but argument is of type 'void (*)(void *, const char *)'
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
^
/usr/include/libxml2/libxml/xmlerror.h:866:
这是libxml2
中的默认错误消息函数,我尝试调用的函数是
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
我的handler
参数函数是
void
skipErrorPrinting(void *ctx, const char *msg, ...)
{
}
然后我这样调用initGenericErrorDefaultFunc()
initGenericErrorDefaultFunc(skipErrorPrinting);
这里是xmlGenericErrorFunc
的定义
typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx,
const char *msg,
...) LIBXML_ATTR_FORMAT(2,3);
它很不稳定,它想要 return 默认错误处理程序。所以你必须传递一个指向变量的指针。像这样(未经测试):
xmlGenericErrorFunc handler;
initGenericErrorDefaultFunc(&handler);
如果我正确理解了您的意图,这并不是您真正想要用来抑制错误的功能。请改用 xmlSetGenericErrorFunc()。您可以使用 initGenericErrorDefaultFunc() 再次恢复它。传递 NULL。
您使用xmlGenericErrorFunc *handler
。注意星号。 xmlGenericErrorFunc
已经用一个定义了类型。把xmlGenericErrorFunc
后面的星号去掉就可以了,已经是指针了
我想不通
void (**)(void *, const char *)
/* ^^ why are there 2 asterisks here?
意思是,它是一个指向函数的指针,但我没能
确切的错误信息是
expected 'void (**)(void *, const char *)' but argument is of type 'void (*)(void *, const char *)'
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
^
/usr/include/libxml2/libxml/xmlerror.h:866:
这是libxml2
中的默认错误消息函数,我尝试调用的函数是
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
我的handler
参数函数是
void
skipErrorPrinting(void *ctx, const char *msg, ...)
{
}
然后我这样调用initGenericErrorDefaultFunc()
initGenericErrorDefaultFunc(skipErrorPrinting);
这里是xmlGenericErrorFunc
typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx,
const char *msg,
...) LIBXML_ATTR_FORMAT(2,3);
它很不稳定,它想要 return 默认错误处理程序。所以你必须传递一个指向变量的指针。像这样(未经测试):
xmlGenericErrorFunc handler;
initGenericErrorDefaultFunc(&handler);
如果我正确理解了您的意图,这并不是您真正想要用来抑制错误的功能。请改用 xmlSetGenericErrorFunc()。您可以使用 initGenericErrorDefaultFunc() 再次恢复它。传递 NULL。
您使用xmlGenericErrorFunc *handler
。注意星号。 xmlGenericErrorFunc
已经用一个定义了类型。把xmlGenericErrorFunc
后面的星号去掉就可以了,已经是指针了