NS_GNUC_NONNULL is only used in the nscheck.h header because I haven't
had time to sprinkle it anywhere else  :-)   I think it's a pretty
useful feature, so I'd like to keep it.

Macro varargs are not supported by any Microsoft compiler?

If you really can't find another solution, then redefining
NS_GNUC_NONNULL to take a single arg should work.  It can be called
multiple times, one for each non-null function argument.  But this is
ugly, so prefer to keep the varargs if you can.



On 6/29/05, Ibrahim Tannir <[EMAIL PROTECTED]> wrote:
> Hello everybody,
> 
> Please excuse my ignorance in the netickette and use of SF and
> the naviserver project - and please bear with me - I'm still
> learning.
> 
> To Zoran's request (motivated by myself):
> Since NS_GNUC_NONNULL is not used anywhere else but in nscheck.h
> itself and only with GNUC, it suffices to remove it from the
> non-GNUC part to make it compilable for Windows.
> 
> Is it OK with you if I do so?
> 
> Greetings,
> Ibrahim
> 
> 
> 
> Zoran Vasiljevic wrote:
> > Hi frieds,
> >
> > There seems to be a problem with NS_GNUC_NONNULL macro definition
> > when compiling the code on Windows. This is how/where this beast
> > is defined:
> >
> > #if __GNUC_PREREQ(3,3)
> > # define NS_GNUC_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
> > # define NS_GNUC_WARN_UNUSED_RESULT __attribute__
> > ((__warn_unused_result__))
> > # define NS_GNUC_MAYALIAS __attribute__((__may_alias__))
> > #else
> > # define NS_GNUC_NONNULL(...)
> > # define NS_GNUC_WARN_UNUSED_RESULT
> > # define NS_GNUC_MAYALIAS
> > #endif
> >
> > Unfortunately, the
> >
> >    # define NS_GNUC_NONNULL(...)
> >
> > will not be accepted by the Microsoft compilers since it is
> > a varargs macro. They do not support varargs macros. Well.
> >
> > Now, idea is to just scrap the NS_GNUC_NONNULL entirely
> > when compiling with non-gcc compilers. Why? Because this
> > macro is really only used IF gcc, and, as far as I can
> > see it is used only here:
> >
> > #if __GNUC_PREREQ(2,7)
> > # define NS_GNUC_UNUSED __attribute__((__unused__))
> > # define NS_GNUC_NORETURN __attribute__((__noreturn__))
> > # define NS_GNUC_PRINTF(m, n) __attribute__((__format__ (__printf__,  m,
> > n))) NS_GNUC_NONNULL(m)
> > # define NS_GNUC_SCANF(m, n) __attribute__((__format__ (__scanf__, m,
> > n))) NS_GNUC_NONNULL(m)
> > #else
> > # define NS_GNUC_UNUSED
> > # define NS_GNUC_NORETURN
> > # define NS_GNUC_PRINTF(fmtarg, firstvararg)
> > # define NS_GNUC_SCANF(fmtarg, firstvararg)
> > #endif
> >
> > Are there any objections to remove the NS_GNUC_NONNULL?
> > Are there any better ideas?
> >
> > Cheers
> > Zoran
> 
> 
> -------------------------------------------------------
> SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> from IBM. Find simple to follow Roadmaps, straightforward articles,
> informative Webcasts and more! Get everything you need to get up to
> speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
> _______________________________________________
> naviserver-devel mailing list
> naviserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
>

Reply via email to