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

标签 version d conditional-compilation dmd

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

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

我想出了一个解决方法:

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

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

最佳答案

您可以使用预定义的 __VERSION__持续的。

另见std.compiler模块( version_majorversion_minor ,特别是)以获得更简单的使用方法。

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

关于version - 如何在编译时检查 DMD 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103672/

相关文章:

仅需要 v5.10 时 Perl v5.16 被拒绝

ios - 是否可以仅更新应用商店中的内部版本号?

image-processing - D lodepng编译错误

D和伪终端

d - 学习GtkD - 特别是定制绘画

jquery - jQuery v1.9.1 的 .attr() 复选框问题

c# - 用正则表达式匹配版本号部分

C++11:条件编译:成员

csv - 通过cmake用逗号定义值

c++ - 在没有编译错误的情况下,基于静态条件延迟对非嵌套类型的引用?