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

4

我可以通过version(DMD){}测试DMD是否编译了给定的代码,但是如何检查它的版本?(2.66/2.65等)

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

我想出了一个解决办法:

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

但是有更好的方法吗?例如,直接检查该特定修饰符的存在性?
1个回答

7

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

此外,还可以使用std.compiler模块(具体来说是version_majorversion_minor)来更轻松地使用它。

然而,您的解决方法可能是更好的方法。即使对于发布版本之间的编译器构建,它也能使代码正确地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接