View mode: basic / threaded / horizontal-split · Log in · Help
November 06, 2011
odd use of preprocessor
poking about in elfutils headers, I've come across the following idiom
several times

/* Error values.  */
enum
 {
   DW_TAG_invalid = 0
#define DW_TAG_invalid  DW_TAG_invalid
 };


anyone know if anything strange is going on here that would prevent
trivial conversion to d?
November 06, 2011
Re: odd use of preprocessor
On 06-11-2011 20:43, Ellery Newcomer wrote:
> poking about in elfutils headers, I've come across the following idiom
> several times
>
> /* Error values.  */
> enum
>    {
>      DW_TAG_invalid = 0
> #define DW_TAG_invalid  DW_TAG_invalid
>    };
>
>
> anyone know if anything strange is going on here that would prevent
> trivial conversion to d?

The only thing I can think of is fully-qualified enums. The #define 
ensures that you _don't_ have to fully qualify DW_TAG_invalid. But why 
they would do this (considering C doesn't have this enum feature), I 
don't know.

- Alex
November 06, 2011
Re: odd use of preprocessor
On 11/06/2011 01:50 PM, Alex Rønne Petersen wrote:
> On 06-11-2011 20:43, Ellery Newcomer wrote:
>> poking about in elfutils headers, I've come across the following idiom
>> several times
>>
>> /* Error values.  */
>> enum
>>    {
>>      DW_TAG_invalid = 0
>> #define DW_TAG_invalid  DW_TAG_invalid
>>    };
>>
>>
>> anyone know if anything strange is going on here that would prevent
>> trivial conversion to d?
> 
> The only thing I can think of is fully-qualified enums. The #define
> ensures that you _don't_ have to fully qualify DW_TAG_invalid. But why
> they would do this (considering C doesn't have this enum feature), I
> don't know.
> 
> - Alex

nor c++, right?
November 06, 2011
Re: odd use of preprocessor
On 2011-11-06 19:43:15 +0000, Ellery Newcomer 
<ellery-newcomer@utulsa.edu> said:

> /* Error values.  */
> enum
>   {
>     DW_TAG_invalid = 0
> #define DW_TAG_invalid  DW_TAG_invalid
>   };

It's strange all right. The only reason I can come with is that they 
want to prevent someone else from defining DW_TAG_invalid as a 
preprocessor value that would shadow the enum value.

Just ignore it, D has no preprocessor. :-)

-- 
Michel Fortin
michel.fortin@michelf.com
http://michelf.com/
November 07, 2011
Re: odd use of preprocessor
On 06-11-2011 21:36, Ellery Newcomer wrote:
> On 11/06/2011 01:50 PM, Alex Rønne Petersen wrote:
>> On 06-11-2011 20:43, Ellery Newcomer wrote:
>>> poking about in elfutils headers, I've come across the following idiom
>>> several times
>>>
>>> /* Error values.  */
>>> enum
>>>     {
>>>       DW_TAG_invalid = 0
>>> #define DW_TAG_invalid  DW_TAG_invalid
>>>     };
>>>
>>>
>>> anyone know if anything strange is going on here that would prevent
>>> trivial conversion to d?
>>
>> The only thing I can think of is fully-qualified enums. The #define
>> ensures that you _don't_ have to fully qualify DW_TAG_invalid. But why
>> they would do this (considering C doesn't have this enum feature), I
>> don't know.
>>
>> - Alex
>
> nor c++, right?

Even C++0x requires you to use 'enum class' for this effect. I assume 
this is to cope with <some random compiler>'s craziness. But I have no 
idea, really.

- Alex
Top | Discussion index | About this forum | D home