March 31, 2005
On

http://www.dsource.org/tutorials/index.php?show_example=117

I found this interesting example of version() use

<code>
// By Joey Peters

// pass -version=free to dmd
version(Free) {
 version = FeatureA;
} else {
 version = FeatureA;
 version = FeatureB;
}

void main() {
 // every version has this.
 version(FeatureA) {
   printf("Hello world!");
 }
 // only the non free has this
 version(FeatureB) {
   printf("Deluxe!");
 }
}
</code>

I but from reading die above I get the feeling you also ways need to place version + else. What I would be looking for is to be able to do this...


...code...

version(debug)
{
	writefln...
}

...code...

version(debugging2)
{
	writefln...
}

...code...

and be able to selectively turn those blocks on and off.

Would -version=debug compile my code, plus turn on the debug version section, but not the debugging2 section. Dito for -version=debugging2?

Could I then group them

version(AllDebug) {
 version = debug;
 version = debugging2;
} else {
}

I.e. that with -version=AllDebug I could turn on all debugging, and by not defining a -version, no debug code would be in the compile?


AEon
March 31, 2005
AEon wrote:
> I but from reading the above I get the feeling you always need to place version + else. What I would be looking for is to be able to do this...
> 
> ....code...
> 
> version(debug)
> {
>     writefln...
> }
> 
> ....code...
> 
> version(debugging2)
> {
>     writefln...
> }
> 
> ....code...
> 
> and be able to selectively turn those blocks on and off.
> 
> Would -version=debug compile my code, plus turn on the debug version section, but not the debugging2 section. Dito for -version=debugging2?

Just tested this, the above already works as expected (hoped for), i.e. you do not need to define the "default" code in an else{} of version. So far so good.


> Could I then group them
> 
> version(AllDebug) {
>  version = debug;
>  version = debugging2;
> } else {
> }
> 
> I.e. that with -version=AllDebug I could turn on all debugging, and by not defining a -version, no debug code would be in the compile?

This does not work though.

Is there any way to group all the versions in one new version tag?

AEon