unit a;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
================================================================
unit b;
interface
uses a;
implementation
begin
MessageBox(Applicationn.Handle, 'a', 'b', MB_OK);
end;
end.
=========================================================================
以上代码调试不通,提示[Pascal Error] b.pas(9): E2003 Undeclared identifier: 'MessageBox'
liuchong 的解释:
{在A单元中放在interface部分的引用,在B单元引用A单元时,同时可以使用A单元interface部分中其它单元的数据。
一般把系统单元放在interface部分,把自定义单元放在implemetation部分。}
好像不对哦。
icelovey 的解释是对的
{在interface部分引用的单元不可以循环引用,而在implementation 部分的可以循环引用,
一般公用单元什么都是在interface部分引用的! }
在 implementation 部分,可以同时 a uses b 和 b uses a,而在 interface 部分却不行。
duhai_lee 的解释就是引用的先后次序,当然要在使用之前引用了。
我在 interface 不需要引用任何单元文件,只做函数的声明,而在 implementation 部分需要用到其他单元的文件,那可以不可以把所有 uses 都放在 implementation 部分呢。
implementation 部分的 uses 只是为了实现循环引用而已吗?