在编译时D任意代码

ren*_*ren 3 d dmd ctfe

我听说D可以在编译时执行任意用户代码.这是真的?有人可以给出一个例子(特别是当编译永远不会终止时)?这个功能是为了什么?另外,如果是这样的话有一种方法可以通过一些编译器选项来禁用它(编译器是dmd)?

Rob*_*ale 5

是的,这是部分正确的.D具有编译时功能执行,即它具有在编译时执行功能的能力.但是,这样的功能都需要既便携无副作用.

您将在D语言官方文档中找到深入的解释.

  • 我还想补充一点,如果你想把编译器放到一个无限循环中,它就不能做更恶毒的事了.它不能覆盖文件或在网络上发送垃圾邮件或类似的东西.在你自己的程序中,编译时执行是选择性的,所以你可以不使用它,如果你不想,而在其他人的程序中,我只是说如果编译花费不合理,只需点击ctrl + c强行阻止它. (3认同)