Unconditional compilation?

John C johnch_atms at hotmail.com
Sun Mar 9 06:50:03 PDT 2008


Bill Baxter wrote:
> John C wrote:
>> Code in version blocks must be syntactically correct even if the 
>> condition is not met and the code isn't compiled - ie, the compiler 
>> still parses the code. But this makes writing libraries that compile 
>> with both D1 and D2 difficult - I want to add features for D2 users 
>> without having to distribute a separate version of the library.
>>
>> version(D_Version2) {
>>   struct SomeStruct {
>>
>>     // D2 copy ctor
>>     this(this) {}
>>
>>   }
>> }
>>
>> D1 chokes on that, which is expected behaviour according to the spec. 
>> But how do I get the same behaviour as #if and #else - ie, tell the 
>> compiler to completely ignore anything if some condition is not met?
> 
> String mixin.  Not pretty, but it works.
> 
> --bb

Feared as much.

I'm wondering what the point is in having a version block's syntax 
checked when the code it contains isn't compiled.


More information about the Digitalmars-d-learn mailing list