On Thu, 29 May 2014 10:45:28 -0400, safety0ff <safety0ff....@gmail.com> wrote:

//******* CODE **********
mixin("version = foo;");
version(foo)
{
void main(){}   
}
//****** END CODE *******
If it's illegal in D, what is the reason & where is documented?

The reason I was considering such a construct is the following:
Some C libraries have an associated "config.h" header that gets generated when it is compiled. I was thinking it may be possible to parse these config.h files at compile time (using text import) and convert some of the #define's into "version = foo;"

Even if that is valid code, you are much better off using enums and static if.

enum includeSomeFeature = ...

static if(includeSomeFeature)
{
 ...
}

These work much more like #defines, and can be seen outside the module.

-Steve

Reply via email to