On Mon, Dec 05, 2005 at 04:38:40PM -0500, Derek Atkins wrote: > If you were on IRC you'd have more information on this. > > Yes, it is 64-bit only. The problem is that on some versions of gcc4 > stddef.h #defined NULL as (int)0 which causes a compiler warning when > passing that into a char*.
I'm no expert, and I don't actually know what gcc #defines NULL to, but I don't think this is quite right. I don't think this is a gcc problem. No compiler can infer the correct type for variadic arguments. In a variadic argument list, a compiler *must* interpret an unqualified "0" (which is probably what NULL is) as integer type. Our code is just wrong for any machine where the null pointer is not a 32 bit zero, even if it's some (imaginary) 32-bit machine. > > The fix (which David is working on -- which you'd know if you were in > IRC) is to #define GNC_NULL ((gpointer)0) and then use that instead of > NULL in these places. Hmm. Seems a bit heavy-handed to me, but it would work. I hope it doesn't result in gratuitous use of GNC_NULL in the 99% of places where NULL is fine. IMHO, it's better that programmers remain aware that the use of NULL as a sentinel is "special". IOW, *not* hiding this behavior gives a better picture of what the code actually does, which tends to make for better code and better programmers in the long run. One problem I see with GNC_NULL, is visibility. If it's too visible, people use it gratuitously; if it's not visible enough, people forget to use it when they should; How to choose? Better just to /understand/ what's going on. -chris _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel