Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Fri, 17 Apr 2015 17:36:02 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: Explicit casts in ctype.h suppress compiler warnings

On Fri, Apr 17, 2015 at 09:24:09PM +0300, Alexander Monakov wrote:
> > 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)

This still depends on the inline function getting honored, and puts
extra crap in the debug output. Instead, how about:

#define isdigit(a) (0 ? (isdigit)(a) : ((unsigned)(a)-'0') < 10)

Rich

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.