Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | 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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Alex Rønne Petersen | 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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | 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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | 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
|
Copyright © 1999-2021 by the D Language Foundation