Hmm - about manifest/enum
Sean Kelly
sean at f4.ca
Tue Jan 1 10:04:24 PST 2008
Sean Kelly wrote:
> Sean Kelly wrote:
>> Walter Bright wrote:
>>> Derek Parnell wrote:
>>>
>>>> The current decision to reuse 'enum' for manifest constants is yet
>>>> another
>>>> example of a designer believing that their intuition is better than
>>>> their
>>>> customers', regardless of any evidence to the contrary. Please
>>>> reconsider
>>>> that there might be a remote possibility that this decision is actually
>>>> wrong in this case; 'enum' is not the best choice for developers
>>>> when it
>>>> comes to declaring manifest constants.
>>>
>>> There are a number of people who strongly feel it is the correct
>>> decision who are not vocal about it.
>>
>> I don't suppose the use of 'enum' in this context has had any impact
>> on named enumerations? ie. We still cannot have a named enum which
>> contains strings, correct? Also, are traditional unnamed enums still
>> legal?
>>
>> enum
>> {
>> a, b, c
>> }
>>
>> enum : long
>> {
>> d, e, f
>> }
>
> err... assume there are values assigned to the members above.
Seems it does still work that way. It's not a big thing, but is perhaps
worth mentioning that the new enum feature does change the behavior of
existing code:
enum
{
a = byte.max
}
void main( char[][] args )
{
printf( "%.*s: %d\n", typeid(typeof(a)).toString, a );
}
Under D 1.0 this prints:
int: 127
And under D 2.0 this prints:
byte: 127
I can see this causing occasional rare problems for code transitioning
to 2.0, but probably nothing serious. Fortunately, this is disallowed
in 1.0:
enum { a = long.max }
Sean
More information about the Digitalmars-d
mailing list