【发布时间】:2017-01-29 12:58:24
【问题描述】:
与在 C/C++ 中一样,该程序首先被提供给预处理器以包含文件并执行宏扩展等......然后被提供给编译器以将代码转换为汇编格式并继续处理。但在 Java 中我会没有看到预处理器的使用。为什么这样,然后谁来完成通常预处理器处理的所有任务?
【问题讨论】:
与在 C/C++ 中一样,该程序首先被提供给预处理器以包含文件并执行宏扩展等......然后被提供给编译器以将代码转换为汇编格式并继续处理。但在 Java 中我会没有看到预处理器的使用。为什么这样,然后谁来完成通常预处理器处理的所有任务?
【问题讨论】:
预处理器不是Java编译过程的必要步骤。
在 C/C++ 中,存储在不同文件中的函数被“包含”在其他文件中,这实质上意味着它们被完整地复制并粘贴到文档中。考虑到当时的硬件功能,这在当时是一个非常好的主意,但现在更现代的语言使用一种称为“符号导入”的东西。
符号导入涉及在另一个文件中查找符号,而不是直接使用文本。在 Java 中,这可能涉及导入常量或类。这些导入充当对其他文件中代码的引用。因此,Java 允许直接在语义级别上进行这些导入,而不必费心让预处理器复制和粘贴代码并最终确定哪些代码属于哪个文件。
这使得语言的编译过程不需要预处理器,因此连同其他原因一起被忽略了。
【讨论】: