D 在编译时编译任意代码

D 在编译时编译任意代码,d,dmd,ctfe,D,Dmd,Ctfe,我听说D可以在编译时执行任意用户代码。这是真的吗?有人能举个例子吗(特别是当编译从未终止时)?这个功能是做什么用的?如果是这样的话,有没有办法通过一些编译器选项(编译器是dmd)来禁用它?是的,部分正确。D具有,即它具有在编译时执行函数的能力。但是这些功能必须是便携式的,并且没有副作用 你会在.中找到一个深入的解释,不是任意代码,只有纯函数可以在编译时完成。我还要补充一点,如果你愿意,你可以将编译器放入无限循环,但它不能做比这更恶意的事情;它不能在网络上覆盖文件或发送垃圾邮件之类的东西。在您自己

我听说D可以在编译时执行任意用户代码。这是真的吗?有人能举个例子吗(特别是当编译从未终止时)?这个功能是做什么用的?如果是这样的话,有没有办法通过一些编译器选项(编译器是dmd)来禁用它?

是的,部分正确。D具有,即它具有在编译时执行函数的能力。但是这些功能必须是便携式的,并且没有副作用


你会在.

中找到一个深入的解释,不是任意代码,只有纯函数可以在编译时完成。我还要补充一点,如果你愿意,你可以将编译器放入无限循环,但它不能做比这更恶意的事情;它不能在网络上覆盖文件或发送垃圾邮件之类的东西。在您自己的程序中,编译时执行是可选的,因此如果您不想使用它,您可以不使用它。在其他人的程序中,我只想说,如果编译花费了不合理的时间,只需按ctrl+c强制停止即可。@AdamD.Ruppe它可能会使可执行文件过大bloat@ratchetfreak有时“臃肿”程序比超级紧凑型的东西更有用,超级紧凑型的东西在运行时做任何事情,而且,它可以由(库)程序员控制,所以它是一个超级有用的工具