[proposal] version statements with multiple arguments.

Nick Treleaven ntrel-public at yahoo.co.uk
Wed Oct 24 05:46:18 PDT 2012


On 24/10/2012 10:40, Don Clugston wrote:
> On 23/10/12 05:17, 1100110 wrote:
>> Looking at std.io (hopefully the right version maybe?) I see this:
>>
>> version(OSX)
>> {     do something; }
>> version(Windows)
>> {     do the same thing as above; }
>> version(FreeBSD)
>> {     ditto; }
>> version(Linux)
>> {    finally do something different; }
>> and:
>> version(Windows) version(DigitalMars)
>> {     something; }
>>
>>
>> I was rather surprised that this wasn't accepted:
>> //Error: found '||' when expecting ')'
>>
>> version(OSX || Windows || FreeBSD)
>> {     do something; }
>> version(Linux)
>> {     do something different; }
>>
>>
>> The last one could be intuitively described as:
>> version(Windows && DigitalMars)
>> {     blah;     }
>
> That allows you to create the same bird's nest that you can get with
> #ifdef in C.
>
> See bug 7417 for a different solution that fixes other problems as well.
> Just make version declarations behave like bool variable declarations:
>
> version useTheOrdinaryWay = OSX || Windows || FreeBSD;
>
> version dmdWindows = Windows && DigitalMars;
> version (dmdWindows) { blah; }

Vote up!
http://d.puremagic.com/issues/show_bug.cgi?id=7417


More information about the Digitalmars-d mailing list