我看到您已经标记了您的问题[delphi]
以及[pascal]
,所以我猜您实际上是在编写 Delphi 代码。然后你有更多的选择,除了关心程序的顺序和forward
大卫讨论的指令。
大多数情况下,Delphi
项目(GUI或控制台)被划分为“单元”。一个典型的单位如下所示:
unit MyUnit;
interface
const
RANDOM_NUMBER = 17;
var
PrintExtraNiceMessage: boolean;
procedure DoThis;
procedure DoThat;
implementation
const
BUFFER_SIZE = 256;
procedure InitSomething;
begin
// TODO: do some internal work...
end;
procedure DoThis;
begin
// TODO: do something
end;
procedure DoThat;
begin
// TODO: do something else
end;
您会注意到该单元分为两部分:interface
部分和implementation
部分。该interface
部分仅包含声明(函数、过程、类型、常量和变量);此处声明的函数和过程在本节中定义(即实现)implementation
。请注意,节中定义的函数和过程可能在implementation
节中没有声明interface
。
伟大的想法是interface
节的内容对程序中的所有其他单元都是可见的,而implementation
节的内容仅在这个单元内可见。所以程序中的任何其他单元都可以使用RANDOM_NUMBER
常量、PrintExtraNiceMessage
变量和两个过程DoThis
和DoThat
。但是您只能InitFunction
在这个单元中使用(例如,inside DoThis
或DoThat
)。此外,这个常数BUFFER_SIZE
在这个单元之外也是不可见的。
这是一种非常优雅的方法。该interface
部分描述了该单元如何在其他单元中使用(例如,有哪些功能以及如何使用它们),并且实现细节在该implementation
部分中“隐藏”。
这种方法的一个好处是它至少可以解决您的问题。如果、add
、和过程对其他单元可见multiply
,则应在节中声明它们。但是,当涉及到您的过程时,编译器确实知道它们,因此即使它们在该部分内的过程下方定义(实现),您也可以使用调用这些。但是,另一方面,如果让其他单位使用这些程序完全没有意义,则不应在该部分中声明它们,您需要按照 David 的建议进行操作。如果您的项目中根本没有正常单位,这也适用,也就是说,如果您只有subtract
divide
interface
questiontype
questiontype
implementation
interface
program
文件,它没有分成interface
和implementation
部分。