主程序中定义的功能和其他单元的公共功能

时间:2014-06-19 15:49:18

标签: pascal

在pascal中,有没有办法在主程序中定义一个函数,并且可以被其他单元调用?我知道在一个单元中定义一个函数的方法可以由主程序和其他单元调用。出于某种原因,我只能有两个程序文件,一个主程序和一个单元。其中一个功能无法在单元中定义。谢谢

1 个答案:

答案 0 :(得分:0)

不,是的。不是在Pascal中不可能,但是许多编译器(Free Pascal,也许也是Delphi)可以通过使用支持调用外部(非Pascal)代码来规避这一点。

这样就完成了将变量声明为具有特定链接器名称的单元中的外部变量,并将此链接器名称添加到mainmodule中的过程声明中。代码只会在链接器上遇到,所以你负责使声明匹配。

Free Pascal使用这种技术,例如从系统单元导出某些OS相关例程而不使它们可见。

E.g。免费Pascal:

功能主程序声明:

 function Fpmkdir(path : pchar; mode: mode_t):cint; [public, alias : 'FPC_SYSC_MKDIR'];
   begin
    ...
   end;

单位中的功能声明:

Function  FpMkdir      (path : pChar; Mode: TMode):cInt;  external name 'FPC_SYSC_MKDIR';