Conditional Compilation Multiple Versions
Claude via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jan 6 05:44:37 PST 2017
On Friday, 6 January 2017 at 13:27:06 UTC, Mike Parker wrote:
> version(Windows)
> enum bool WindowsSupported = true;
> else
> enum bool WindowsSupported = false;
Well, yes, that was a bad example. I thought to change it before
sending my post but I could find any other meaningful alternative.
My point was, that you can re-define WindowsSupported as a
version even if it already defined, but not as an enum. And
sometimes, you cannot simply use the else statement without
creating another indented block (which seems a bit awkward).
> Yes, it works quite well for most use cases and should
> generally be preferred. I disagree that it scales, though. At
> some point (a point that is highly project-dependent), it
> breaks down, requiring either very large modules or duplicated
> versions across multiple modules.
Yes, in that case, you would probably break it down into several
specialized config modules. I meant it forces you not to put
directly version(Windows) into your code, but rather
version(ThatFeatureSupportedByWindowsAmongstOtherOSs).
> My position is that I will always choose version blocks first,
> but if I find myself in a situation where I have to choose
> between duplicating version statements (e.g. version(A)
> {version=AorB; version=AorC;}) across multiple modules and
> restructuring my code to accommodate versioning, I much prefer
> to use the enum alternative as an escape hatch.
Ok, that's interesting.
Do you have code samples where you do that? I'm just curious.
More information about the Digitalmars-d-learn
mailing list