OR in version conditional compilation

Steven Schveighoffer schveiguy at gmail.com
Wed Mar 18 16:32:10 UTC 2020


On 3/18/20 12:23 PM, IGotD- wrote:
> I have not seen any example where version has several OR matches.
> 
> Example idiom:
> 
> version(X86_64 || X86)
> {
> 
> }
> else version(ARM || Thumb)
> {
> 
> }...
> 
> you get the idea. So is this possible at all or do you have to duplicate 
> the code for each version identifier despite they are equal for many 
> version identifiers?

No, it's not possible. And it won't ever be possible, Walter is dead-set 
against it. If you want to know the history, look waaaay back in the 
forums. This question comes up every so often.

There is a workaround though:

template v(string versionID)
{
    mixin("version(" ~ versionID ~ ") enum v = true; else enum v = false;");
}

static if(v!"X86_64" || v!"X86")

...

-Steve


More information about the Digitalmars-d-learn mailing list