Factor unrelated declarations out of tree.h (2/2)

Andrew MacLeod amacleod@redhat.com
Fri Nov 15 14:13:00 GMT 2013


On 11/15/2013 08:31 AM, Joseph S. Myers wrote:
> On Fri, 15 Nov 2013, Richard Biener wrote:
>
>> Yeah, though this has interesting effects on includes that do stuff like
>>
>> #ifdef NO_DOLLARS_IN_LABELS
>> ...
>>
>> where the presence of this definition depends on another header file
>> and thus the ultimate outcome in your .c file depends on include file
>> order.
>>
>> So ... no #ifdefs inside headers?  Or have meta-defines like
>>
>> #define NO_DOLLARS_IN_LABELS_DEFINED
>>
>> and
>>
>> #ifndef NO_DOLLARS_IN_LABELS_DEFINED
>> #error ...
>> #endif
>>
>> at use sites?
> Rather than such a meta-define, I prefer changing the semantics of the
> macro itself from defined/undefined to nonzero/zero, changing the users
> from #if to if () conditionals (or ? :, as appropriate), and adding a
> default zero definition to defaults.h along with updating all definitions,
> users and documentation.  A meta-define seems just as error-prone as the
> original #ifdef.
I like this a lot actually.... then you can tell whether its been 
defined or not... Although I suppose it depends on when and where the 
non-default value comes from, and that it is properly included in the .c 
file and not missed.  It ought to cover the vast majority of cases anyway.
>
> Similarly, for any macros with default definitions scattered around the
> source tree rather than in defaults.h, moving them to defaults.h is a good
> idea.
I think this is also a good idea.

Andrew



More information about the Gcc-patches mailing list