|
Message-ID: <20150417183511.GJ2875@port70.net> Date: Fri, 17 Apr 2015 20:35:12 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Subject: Re: Explicit casts in ctype.h suppress compiler warnings * Alexander Monakov <amonakov@...ras.ru> [2015-04-17 21:24:09 +0300]: > > I confirm that the idea works, and as Rich said it causes a warning with > -pedantic -std=c89 with gcc-4.5..4.7 (but not 4.8, 4.9). > i assume we could use compound literals in c89 with __extension__ > > Do you have an idea in mind for how we could achieve that? I suspect > > the macros are still better optimizable than the inline function > > approach, so I'd lean towards doing a macro that avoids evaluating c > > and just checks its type, which would involve using ?: I think. > > I admit I was thinking of doing isspace-style inlines everywhere, but thanks > to your suggestion I was able to come up with this: > > static __inline void __is_int(int a) {} > #define isdigit(a) (__is_int(0?(a):0), ((unsigned)(a)-'0') < 10) > i think using :0 there is not useful because null pointer constants are special in ?: i think rich meant something like #define isdigit(a) (((0?1U:(a))-'0') < 10) which works when the conversion rank of a is <= unsigned
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.