的顺序进行初子句)
子句可以出现
Programs and units
大多数工程文件包含一个uses子句,大多数单元的接口部分也是如此,单元的实现部分也可以包含自己的uses子句。
System单元自动被每个程序所引用,并且不能在uses子句中明确列出来(System单元实现文件I/O、字符串处理、浮点运算、动态内存分配等例程)。其它一些标准单元,比如SysUtils,必须包含在uses子句中。大多数情况下,当由工程创建和维护源文件时,所有必需的单元将被包含在uses子句中。
在单元声明以及uses子句中(尤其是在Linux下),单元名称必须和文件名大小写一致。在其它情况(比如使用限定符的标志符),单元名是大小写无关的。要避免在单元引用中出现问题,要明确指出单元文件:
uses MyUnit in "myunit.pas";
如果像上面这样在工程文件中明确引用一个单元,在其它源文件中就可以像下面那样简单地引用它,而不必考虑大小写问题:
uses Myunit;
关于uses子句的内容和使用位置,请参考多重和间接单元引用以及循环单元引用。
The syntax of a uses clause(uses子句的语法)
一个uses子句由关键字uses、后面跟一个或多个由逗号隔开的单元名,最后是一个分号构成。举例如下:
uses Forms, Main;
uses Windows, Messages, SysUtils, Strings, Classes, Unit2, MyUnit;
uses SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs;
在程序或库(工程)的uses子句中,任何单元名后面可以跟关键字in和一个(单元)源文件名:源文件名用单引号括起来,可包括或不包括路径,路径可以是绝对路径,也可以是相对路径。举例如下:
uses Windows, Messages, SysUtils, Strings in 'C:\Classes\Strings.pas', Classes; uses
QForms,
Main,
Extra in '../extra/extra.pas';
当要指定单元源文件时,在单元的名称后面包含in…。因为IDE期望单元名和它所在的源文件名相同,所以通常没有理由这样做。只有当单元源文件的位置不明确时,你才需要使用in关键字。比如,当
? 引用的单元文件和工程文件在不同的目录,并且单元所在的目录没有包含在编译器搜索路径、
也不在库搜索路径中
? 编译器的不同搜索路径中有同名的单元
? 你在命令行编译一个控制台程序,并且单元名和它的文件名不同
编译器也根据in…来判断哪些单元是工程的一部分。在工程文件(.dpr)的uses子句中,只有后面包含in和一个文件名的单元才被认为是工程的一部分,而其它单元只是被工程引用而不属于这个工程。这种区别对编译程序没有影响,但它影响IDE工具,比如Project Manager和Project Browser。
在单元的uses子句中,你不能用in告诉编译器到哪里寻找单元文件。每个单元文件必须位于编译器搜索路径、或库搜索路径中,或者和引用它的单元文件位于同一路径;而且,单元名必须和它们的单
- 13 -
Programs and units 元源文件同名。
Multiple and indirect unit references(多重和间接单元引用)
在uses子句中,单元出现的顺序决定了它们的初始化顺序(请参考初始化部分),也影响编译器对标志符的定位。如果两个单元声明了具有相同名称的变量、常量、类型、过程和函数,编译器使用uses子句中列在后面的那个单元所声明的标志符。若要访问其它单元的标志符,你必须添加限定符:UnitName.Identifier。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-8.html
伊拉克人民或许会投你的票