D 文本插入和符号插入之间有什么区别?

D 文本插入和符号插入之间有什么区别?,d,D,使用“符号”而不是“文本”插入代码。我相信像Java和Go这样的语言也使用符号插入,所以它似乎同样适用于编译为本机代码的语言,就像它适用于解释/字节码语言一样 有人能给我解释一下区别吗 编辑 问题在于不同软件模块之间的依赖关系。C/C++使用预处理器“#include”宏实现这一点,这些宏基本上是复制和粘贴文件的。这是必需的,以便编译器知道类的大小/对齐方式等。这是“文本”插入。D/Java/Go/etc不使用文本插入,而是使用符号插入。这样做的一个实际意义是提高了编译速度。我想知道的是,“符号

使用“符号”而不是“文本”插入代码。我相信像Java和Go这样的语言也使用符号插入,所以它似乎同样适用于编译为本机代码的语言,就像它适用于解释/字节码语言一样

有人能给我解释一下区别吗

编辑


问题在于不同软件模块之间的依赖关系。C/C++使用预处理器“#include”宏实现这一点,这些宏基本上是复制和粘贴文件的。这是必需的,以便编译器知道类的大小/对齐方式等。这是“文本”插入。D/Java/Go/etc不使用文本插入,而是使用符号插入。这样做的一个实际意义是提高了编译速度。我想知道的是,“符号插入”实际上是如何工作的?

我承认我必须读几遍这个问题才能理解它。。。如果我理解正确,您会想知道在C/C++中使用
#include
指令插入代码的“文本”与D的
import
语句之间有什么区别

在我进一步讨论之前,让我告诉您D也有(嗯,有点像)“文本插入”——请看一下

D的import和C/C++#include之间的主要区别在于D是一种模块化语言。因此,D中的
import
实际上是一个声明。您的问题在“”文章中得到了回答:

C++和C++在很大程度上依赖于头文件的文本包含。这常常导致编译器必须为每个源文件反复重新编译数万行代码,这显然是编译速度慢的原因。头文件通常用于的是符号插入,而不是文本插入。这是通过import语句完成的。符号包含意味着编译器只加载已编译的符号表。需要宏“包装器”来防止多重包含、时髦的pragma-one语法以及预编译头的不可理解的脆弱语法,这些都是不必要的,与D无关


“插入代码”是什么意思?您是在谈论预处理器宏是如何工作的吗?有关编程语言属性的问题可能更适合于cs.stackexchange.com。那么,对于你试图编写的实际代码的问题,关于D的问题是如何与不同语言C或C++有关的?不要垃圾邮件标签@奥拉夫,我把我的问题修改得更清楚了。只有当问题与这些语言无关时,才是垃圾邮件标签。我引用的链接专门讨论了d/c/c++中的include vs import用法。@user1420752:1)它并没有改变您询问的是d,而不是其他语言。仅仅提到一种语言并不能证明标记是正确的。2) 正如您已经得知的,我们不是语言辅导/解释网站。如果可能的话,请删除这些问题并询问其他地方,或者作为迁移的模版。如果这就是OP的意思:所有设计更好的语言都使用了它,包括Pascal、Ada、Modula、Python、,C和C++是异常的一个例外,我不会把导入表达式文本插入和C预处理器一样的意义上调用。即使您mixin(import(file)),它也是单独编译的,而不仅仅是粘贴到源中,然后编译的AST节点将附加到source.True中的该位置。我之所以这么说,仅仅是因为import表达式加载文本,而不执行其他操作<代码>字符串txt=导入(“file.txt”)