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

时间:2017-09-07 01:01:28

标签: d

The D language使用"符号"而不是" textual"插入代码。我相信像Java和Go这样的语言也使用符号插入,因此它似乎同样适用于编译为本机代码的语言,就像解释/字节编码语言一样。

有人可以向我解释一下这个区别吗?

修改

问题是关于不同软件模块之间的依赖关系。 C / C ++通过预处理器实现这一点" #include"基本上复制并粘贴文件的宏。这是必需的,以便编译器知道类的大小/对齐等。这是" textual"插入。 D / Java / Go /等不使用文本插入,而是使用符号插入。其中一个实际意义是提高编译速度。我想知道的是,"符号插入"实际上工作?

1 个答案:

答案 0 :(得分:1)

我承认我必须多次阅读这个问题才能理解它...如果我理解正确,你会想知道你在C / C ++中所谓的“文本”插入代码与{{1指令和D'#include语句?

在我走得更远之前,让我告诉你D也有(好的,有点)“文字插入” - 看一下D's import expression

D的导入和C / C ++ #include之间的主要区别在于D是模块化语言这一事实。所以D中的import实际上是一个声明。您的问题已在“The C Preprocessor vs D”文章中解答:

  

C和C ++在很大程度上依赖于头文件的文本包含。这经常导致编译器必须为每个源文件一遍又一遍地重新编译成千上万行代码,这是编译时间慢的明显原因。通常使用哪些头文件更适合做符号而不是文本插入。这是通过import语句完成的。符号包含意味着编译器只加载已编译的符号表。需要宏“包装器”来防止多个#inclusion,funky #pragma一次语法,以及预编译头文件难以理解的易碎语法,这些都是不必要的,与D无关。