Hi,

It would be nice from Daniel or others to respond to the following
message, we had the same issue in Debian.

Mike

On Tue, Mar 03, 2009 at 07:05:21AM +0100, Belgabor wrote:
> Hi everybody,
>
> I have a (somewhat) serious problem with the definition of  
> ATTRIBUTE_PRINTF in xmlversion.h.
>
> The definition reads:
> /**
>  * ATTRIBUTE_PRINTF:
>  *
>  * Macro used to indicate to GCC the parameter are printf like
>  */
>
> #ifndef ATTRIBUTE_PRINTF
> # if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
> #  define ATTRIBUTE_PRINTF(fmt,args)  
> __attribute__((__format__(__printf__,fmt,args)))
> # else
> #  define ATTRIBUTE_PRINTF(fmt,args)
> # endif
> #else
> # define ATTRIBUTE_PRINTF(fmt,args)
> #endif
>
>
> There are two issues with that. First, ansidecl.h, coming from the GNU C  
> library defines it as:
> /* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL.
>    This was the case for the `printf' format attribute by itself
>    before GCC 3.3, but as of 3.3 we need to add the `nonnull'
>    attribute to retain this behavior.  */
> #ifndef ATTRIBUTE_PRINTF
> #define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__,  
> m, n))) ATTRIBUTE_NONNULL(m)
> #define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
> #define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
> #define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
> #define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
> #define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
> #endif /* ATTRIBUTE_PRINTF */
>
> so it defines ATTRIBUTE_PRINTF_1 et al as well, but is guarded only by  
> ATTRIBUTE_PRINTF. This declaration is shared by wxWidgets, which is the  
> library I have issues with. If I now include xmlversion.h before the  
> wxWidgets library, the ATTRIBUTE_PRINTF in it prevents the definition of  
> the _X macros.
>
> Now if I'd change the order of inclusion (which would in fact be  
> bothersome), the redefinition in xmlversion.h in the #else clause would  
> actually make the macro evaluate to nothing!
>
> I don't know how to properly fix that, but my first try would be to  
> include ansidecl.h instead of defining it yourself, depending on GCC and  
> version. And for all thats good and holy, don't nullify it if it's  
> already defined.
>
> Cheers
> Tobias
> _______________________________________________
> xml mailing list, project page  http://xmlsoft.org/
> xml@gnome.org
> http://mail.gnome.org/mailman/listinfo/xml
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to