I am currently maintaining a port of a c++ library that uses
conditional compilation to integrate into the users program. e.g.:
config.h (edited by the user of the library)
```
#define USE_MY_ASSERT
void MY_ASSERT(bool expr) {...}
```
library.c
```
include "config.h"
#ifndef USE_MY_ASSERT
void MY_ASSERT(bool expr) {...} // default implementation
#end
```
Given that static if at top-level has been broken for some time
(https://issues.dlang.org/show_bug.cgi?id=17883,
https://issues.dlang.org/show_bug.cgi?id=20905,
https://issues.dlang.org/show_bug.cgi?id=21171), I tried to use
version identifiers for this in D:
config.d
```
version = USE_MY_ASSERT;
void MY_ASSERT(bool expr) {...}
```
library.d
```
import config;
version (USE_MY_ASSERT) {} else {
void MY_ASSERT(bool expr) {...}
}
```
Sadly this results in an identifier conflict, as the version set
in config.d does not seem to affect library.d. Is there any way
to import version specifiers from a separate file? I don't want
to pollute the users build files (dub.json etc.) with dozens of
versions they need to pass to the compiler.