Re: [xml] initGenericErrorDefaultFunc weirdness.
- From: "William M. Brack" <wbrack mmm com hk>
- To: "Jose Commins" <axora myrealbox com>
- Cc: xml gnome org
- Subject: Re: [xml] initGenericErrorDefaultFunc weirdness.
- Date: Wed, 2 Jun 2004 22:22:44 +0800 (HKT)
OK, sorry about that - I must be more careful to respond accurately!
Basic C programming example follows:-
---------------------------------------
bill billsuper work $ cat bb.c
#include <libxml/xmlerror.h>
void MyXMLErrorFunction(void *ctx, const char *msg, ...)
{
return;
}
int main(int argc, char **argv) {
initGenericErrorDefaultFunc(
(xmlGenericErrorFunc *)&MyXMLErrorFunction
);
return 0;
}
bill billsuper work $ gcc -Wall \
`../xmlinstall/bin/xml2-config --cflags --libs` \
-o bb bb.c
bill billsuper work $
-------------------------------------------
The function initGenericErrorDefaultFunc takes a single argument
which is the *address* of a function of type xmlGenericErrorFunc.
Therefore, since MyXMLErrorFunction is declared as type void, it is
necessary to specify a type override. The required type is the
address (i.e. a pointer to) a xmlGenericErrorFunc, and in C that is
written as (xmlGenericErrorFunc *).
HTH
Bill
Jose Commins said:
With your suggestion below, I get ' main.c:109: error: invalid
lvalue
in unary `&' '
With this:
initGenericErrorDefaultFunc((xmlGenericErrorFunc)&MyXMLErrorFunction)
I
still get: 'main.c:109: passing arg 1 of
`initGenericErrorDefaultFunc'
from incompatible pointer type' error.
Argh!
Regards,
Jose.
--
Death, taxes and Microsoft. If you put it that way, the first two
don't seem so bad.
On 2 Jun 2004, at 3:37 am, William M. Brack wrote:
Jose Commins said:
Odd, I am trying to use:
initGenericErrorDefaultFunc((xmlGenericErrorFunc)MyXMLErrorFunction);
But I get this error on compilation:
main.c:109: passing arg 1 of `initGenericErrorDefaultFunc' from
incompatible pointer type
And here's my function:
void MyXMLErrorFunction(void *ctx, const char *msg, ...)
{
printf("Aiee! And error has occured!\n");
}
I've tried everything: using the direct address, different
assignments
and so on, but I either get the same error or bus errors. I *do*
have
this working:
xmlSetGenericErrorFunc(NULL,
(xmlGenericErrorFunc)MyXMLErrorFunction);
And that works fine.
But, am I doing something wrong with the declaration/assignment
of
'initGenericErrorDefaultFunc' or is it b0rked?
Regards,
Jose.
From xmlerror.h:
XMLPUBFUN void XMLCALL
xmlSetGenericErrorFunc (void *ctx,
xmlGenericErrorFunc handler);
XMLPUBFUN void XMLCALL
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
so perhaps you could try
initGenericErrorDefaultFunc(&(xmlGenericErrorFunc)MyXMLErrorFunction);
(i.e. use the '&' address-of operator)?
Regards,
Bill
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
xml gnome org
http://mail.gnome.org/mailman/listinfo/xml
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]