Re: [commit] Deprecate remaining STREQ uses

Andrew Cagney
2003-11-25T17:54:20Z

> On 25 Nov 2003 08:55:33 +0200, Eli Zaretskii <eliz@elta.co.il> said:
>
>>> From: David Carlton <carlton@kealia.com>
>>> Date: Mon, 24 Nov 2003 12:06:24 -0800
>>>
>>> I was thinking that just using keyboard macros might do the trick:
>
>
>> For such a simple job, it probably would. But c-macro-expand is more
>> trustworthy, IMHO: it actually runs cpp and has provisions for you to
>> specify the same compiler switches as are used during an actual
>> compilation, so you don't run a risk of missing some obscure #define
>> somewhere.
>
>
> Actually, in the case at hand, they would give different results, it
> turns out! The definition of STREQ isn't simply strcmp()==0 - there's
> an optimization (or "optimization", perhaps) there as well.

You'll now appreciate my paranoia :-)

So, should the transformation be the strictly mechanical inline expansion:

STREQ(a,b) => (*(a) == *(b) ? !strcmp ((a), (b)) : 0)

or also include a simplification leading to:

STREQ(a,b) => (strcmp ((a), (b)) == 0)

Andrew