On Thu, Nov 04, 2021 at 05:24:44PM +0000, Andrey Zherikov via Digitalmars-d-learn wrote: > On Thursday, 4 November 2021 at 17:09:31 UTC, Steven Schveighoffer wrote: > > D doesn't have any equivalent for this. > > Is it possible to add this feature having `-C VERSION="1.2.3"` (`-D` > is already used) to be equal to `enum VERSION="1.2.3"` in global > namespace? > > > The closest you can get is to turn on `version` identifiers. > > > > There is also a quirky `-version=123` which is IMO, a completely > > useless feature. > > I agree - this is useless. `-version myversion=123` would be much more > useful.
Here's a hack that uses dmd's stdin feature to inject D code into a compile command: // main.d import __stdin : myversion; void main() { import std; writeln(myversion); } Compile command: echo 'enum myversion = "1.2.3";' | dmd - -run main.d Output: 1.2.3 You can change the version number just by changing the echo command. And of course, it doesn't have to be a string, it can be any valid D type, and obviously you can declare more than one variable that can then be read by importing from __stdin. T -- Don't throw out the baby with the bathwater. Use your hands...