Tim Ruehsen tim.ruehsen@gmx.de writes:
Some things I fixed, when having a look at the sources.
Thanks.
I'm going to a reply to one or a few issues at a time. Feel free to remind me if some things are still left unaddressed in a few weeks.
#define NONNULL(...) __attribute__ ((nonnull(__VA_ARGS__))) is contains a C99 feature (...), but there are also C99 long long constants somewhere in the code (if you mind C89 compliancy).
I intend to stick to C89, except that I'll happily use features which have been widely available for a long time even though not standardized. Maybe the use of long long constants (where?) are of that type?
So I don't want to use __VA_ARGS__. In this particular case, shouldn't it work fine with
#define NONNULL(args) __attribute__ ((nonnull args))
to be used as, e.g., NONNULL((1)) ?
About __attribute__ nonnull, I have some questions.
1. Does it give any significant benefit, in terms of significant optimizations (I don't think I understand what optimizations it should make possible) or real bugs catched?
2. Since when (release and year) is it supported by gcc?
3. To really make use of it, we should add it to a lot of prototypes in the installed headers. That makes things a bit more complicated, since those headers can't use config.h.
Regards, /Niels