DMD 1.039 and 2.023 releases

Daniel Keep daniel.keep.lists at gmail.com
Fri Jan 16 19:17:57 PST 2009



Bill Baxter wrote:
> [snip]
>> in C# they use the same syntax as the c pre-processor for conditional
>> compilation and such even though C# doesn't have a pre-processor and the
>> syntax is interpreted by the compiler. the above would be something like:
>>
>>  void doSomething(T)(int i) {
>>      if (i == 0) {
>>          #if (is(T == A))
>>              A.SomeAlias x;
>>          #elif (is(T == B))
>>              B.SubType x;
>>          #else
>>              T x;
>>          #endif
>>
>>          x = ... whatever
>>     }
>>     else
>>          int y = x;
>>  }
>>
>> D can always revert to this kind of syntax for compile time code.
> 
> 
> I kinda like that, actually, but I doubt it'll be very popular around here.
> 
> --bb

The '#' has a nice connotation for anyone who's used to C/C++, given
that those statements are handled at "compile time."  The problem, of
course, is that they're really nothing like C preprocessor statements.
They have a different syntax, and completely different capabilities.
What's more, you can't mix them across statements/expressions, so I
suspect it would just cause more confusion.

Additionally, there's this:

   #endif

Unless you plan on moving all control structures to BASIC/pascal style,
I don't think it's wise to start mixing them all over the place.

I do like the idea of a "scopeless block" syntax in theory, though it's
not something that's really been an issue for me.

  -- Daniel


More information about the Digitalmars-d-announce mailing list