DMD 1.039 and 2.023 releases

Denis Koroskin 2korden at gmail.com
Fri Jan 16 23:08:15 PST 2009


On Sat, 17 Jan 2009 06:17:57 +0300, Daniel Keep <daniel.keep.lists at gmail.com> wrote:

>
>
> 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

Well, syntax could be different:

void doSomething(T)(int i) {
    if (i == 0) {
        #if (is(T == A)) {
            A.SomeAlias x;
        #} else if (is(T == B)) {
            B.SubType x;
        #} else {
            T x;
        #}
 
        x = ... whatever
    }
    else
        int y = x;
}

But I don't see how '#' at the beginning is useful.



More information about the Digitalmars-d-announce mailing list