我可以测试DMD正在使用version(DMD){}
编译给定的代码,但是如何检查它的哪个版本? (2.66 / 2.65等)
更简洁,我想检查@nogc
修饰符是否存在,
如果不是 - 定义一个虚拟的。
我想出了一个解决方法:
static if(!__traits(compiles, ()@nogc{}))
{
struct nogc;
}
但有更好的方法吗?例如,甚至直接检查是否存在特定的修饰符?
答案 0 :(得分:6)
您可以使用预定义的__VERSION__
常量。
另请参阅std.compiler模块(version_major
和version_minor
,具体而言),以便更轻松地使用它。
但是,您的解决方法可能是更好的方法。即使对于已发布版本之间的编译器构建,它也将允许代码正常工作。