什么是Delphi DCU文件?
我相信它代表“Delphi编译单元”。我正确地假设它包含目标代码,因此对应于从C/C++源代码文件编译的“.o”文件吗?
什么是Delphi DCU文件?
我相信它代表“Delphi编译单元”。我正确地假设它包含目标代码,因此对应于从C/C++源代码文件编译的“.o”文件吗?
编译器传统上将源代码语言转换为某种中间形式。解释器不这样做--它们直接解释语言并立即运行应用程序。BASIC是解释语言的典型例子。DOS和Windows的"命令行"有一个称为"批处理文件"的文件可以写入,具有.bat扩展名。但在命令行上输入东西会直接执行它们。在*nix环境中,有许多不同的命令行解释器(CLIs),例如sh, csh, bash, ksh, 等等。您可以从所有这些解释器创建批处理文件--这通常被称为"脚本语言"。但现在有很多其他既解释又编译的语言。
无论是 Java 还是 .Net,例如,都会编译成一种称为中间 "byte-code" 表示的东西。Pascal最初是作为一种单通编译器编写的,而Turbo Pascal(起源于PolyPascal)- 不同版本适用于CP/M, CP/M-86和DOS - 直接生成可在这些操作系统下运行的二进制可执行文件(COM)。
Pascal最初被设计为一种小巧高效的语言,旨在通过结构化编程和数据结构来鼓励良好的编程实践;Turbo Pascal 1最初被设计为一个具有内置快速编译器的IDE,并且是DOS和CP/M市场上长时间编辑/编译/链接周期的可负担竞争对手。当时,Turbo Pascal和Pascal都有类似于任何编程环境的限制:内存和磁盘空间以kilobytes计算,处理器速度以Megahertz计算。
链接到可执行二进制文件会防止您链接到单独编译的单元和库。
在Turbo Pascal出现之前,有UCSD p-System操作系统(支持多种语言,包括Pascal)。当时的UCSD Pascal编译器已经使用单元将Pascal语言扩展了起来,并编译成一种伪机器字节码(称为p-code)格式,允许链接多个单元。尽管如此,它速度较慢。Delphi编译单元包含对象代码和预编译头文件,因此在某种程度上类似于obj文件和.pch/.gch文件。
Delphi源文件的“interface”部分对应于头文件,“implementation”部分创建对象代码。
预编译头文件可以显著减少编译和链接时间。DCU头部分提供了链接信息,指向其他引用单元,无需重新发现。
在Delphi/Turbo Pascal环境中,预编译头支持严格的类型检查,如果使用像.coff或.obj这样的Object文件格式,则需要源代码引用。(在C++中,名称重整提供了类似但不完整的功能)。