https://issues.dlang.org/show_bug.cgi?id=12892

--- Comment #4 from Mark Isaacson <[email protected]> ---
Thanks for the quick reply Walter!

I'm afraid that I'm still confused however; the explanation seems tangential.

I'm aware that the curly braces from the static if are present for grouping
rather than [semantic?] scoping. It is precisely because of this that I would
expect use of extern(C): as a label to transcend the curly braces. Otherwise,
the power to do something like version(X) { extern(C): } seems like nonsense
that should be flagged by a linter at minimum.

I agree that the ability to use static if anywhere seems like a gross expansion
of its current role. Perhaps it is that I have trouble thinking in terms of
grammars, but that seems much more dramatic/drastic of a change than allowing
use of things like extern(C): or immutable: to escape version/static if
grouping. Is there no sensible middle ground?


I suppose that leaves me with another question, which is how might I achieve
the result I'm looking for: to conditionally compile with extern(Windows) or
extern(C) depending on platform for a large number of functions? Is today's
answer to copy paste the version() {} else {} to all of them? To use a
mixin/mixin template and repeat that instead?

--

Reply via email to