如何在编译时检查DMD版本?

时间:2014-09-29 15:39:56

标签: version d conditional-compilation dmd

我可以测试DMD正在使用version(DMD){}编译给定的代码,但是如何检查它的哪个版本? (2.66 / 2.65等)

更简洁,我想检查@nogc修饰符是否存在, 如果不是 - 定义一个虚拟的。

我想出了一个解决方法:

static if(!__traits(compiles, ()@nogc{}))
{
    struct nogc;
}

但有更好的方法吗?例如,甚至直接检查是否存在特定的修饰符?

1 个答案:

答案 0 :(得分:6)

您可以使用预定义的__VERSION__常量。

另请参阅std.compiler模块(version_majorversion_minor,具体而言),以便更轻松地使用它。

但是,您的解决方法可能是更好的方法。即使对于已发布版本之间的编译器构建,它也将允许代码正常工作。