Handbook之007:提前声明函数

如果程序 A 调用程序 B,而程序 B 又调用程序 A,当我们开始撰写这
个程序代码的时候,我们等于是在呼叫一个编译程序还没看到的程序。
 
在这个情形下(还有很多情形也会有类似的情况发生),我们可以先宣告一个
函式或者程序, 把完整的名称、 参数都宣告好, 但不用提供完整的程序代码。
要做到这一点,我们只要把完整的程序或函数名称宣告写好,最后加上一个
forward 关键词即可

 

unit Unit1;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure DoubleHello; forward; //forward为提前引用

procedure NewHello;
begin
  if MessageDlg(‘弹出选择对话框‘, TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
    DoubleHello
  else
    ShowMessage(‘Hello‘);
end;

procedure DoubleHello;
begin
  NewHello;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DoubleHello;
end;

end.
时间: 2024-10-11 19:31:02

Handbook之007:提前声明函数的相关文章

javascript两种声明函数的方式的一次深入解析

声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; /*方式二*/ function FUNCTION_NAME () { /* FUNCTION_BODY */}; 区别一 方式一的声明方式是先声明后使用 方式二的声明方式可以先调用,后声明 /*方式一: *先声明后使用 *

js中声明函数的区别

在JS中有两种定义函数的方式, 1是var aaa=function(){...} 2是function aaa(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用. function方式定义函数可以先调用,后声明.请看代码: var声明时,只有变量声明提前了,变量的初始化代码仍在原位置.然而,使用函数声明的话,函数名称和函数体都会提前.两种声明得到的函数都不可删除 //aaa();这样调用就会出错                var aaa = funct

0143 JavaScript预解析:概念、变量预解析、函数预解析、函数表达式声明函数问题

4.1 预解析的相关概念 JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的. JavaScript 解析器在运行 JavaScript 代码的时候分为两步:预解析 和 代码执行. 预解析:在当前作用域下, JS 代码执行之前,浏览器会默认把带有 var 和 function 声明的变量在内存中进行提前声明或者定义. [提升到当前作用域的最顶部.] 代码执行: 从上到下执行JS语句. 预解析会把变量和函数的声明在代码执行之前执行完成.[声明提前,赋值留在原地.] 4.

想:类在一个包提前声明,然后在另一个包描述具体的类内容,但是有问题

想法源于:类可以提前声明,具体类内容可以后面写明: TFrmChangePWTransparent = class; //这里声明其他的类,或一些表里 TFrmChangePWTransparent = class(TForm) end; 构思:一个包写好好多类名,然后在另一包写好具体类的属性方法,但是后来发现这是不可以的 type TProtocolUniITPFrameDataBuilder = class; TProtocolUniITPFrameDataStreamBuilder = c

[其他] 关于C语言中使用未声明函数的问题

在c语言中,碰到一个.c文件,无.h头文件,在另一.c文件调用函数时,并没有进行声明extern, 此时编译器不会报错,会默认去查找同名的函数,这样会存在一些问题,查了些资料,稍微总结了下: 总结: 1.声明函数可以不加extern,函数默认extern.2.声明变量必须要加extern.3.如果不加extern,编译器会默认去查找同函数名的函数,但会出错. 1).参数中如果出现float,一定会出现读取错误,但编译运行不报错.如果形参float后有int*类型的变量,编译运行会报错,之前有则不

javascript中定义声明函数的四种方法

javascript中定义声明函数的四种方法 :http://blog.163.com/zzf_fly/blog/static/209589158201286104927248/ 方法一:function functionName([parameters]){functionBody}; 方法二:将一个未命名的函数function赋给一个指定变量(var):var add=function(a, b){} 方法三:使用new运算符声明函数varName=new Function([param1N

块内声明函数

ES5中只有全局作用域和函数作用域,没有块级作用域的概念,而ES6中引入了块级作用域的概念. ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明. 但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错. ES6 引入了块级作用域,明确允许在块级作用域之中声明函数.ES6 规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用.

声明函数的属性

在GNU C中,你可以声明关于在你程序中调用的函数的某些东西,来帮助编译器优化函数调用和更仔细地检查你的代码. 关键字__attribute__允许你在声明时指定特殊的属性.跟在这个关键字后面的是双重圆括号里面的属性说明.有十四个属性noreturn, pure, const, format, format_arg, no_instrument_function, section, constructor, destructor, unused, weak, malloc, alias and

c++学习笔记之基础---类内声明函数后在类外定义的一种方法

在C++的“类”中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数体. } 这个是在类内声明函数后在类外定义的一种方法!如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类;另外,这样定义函数一定要在类中声明之后,说明它是类的成员函数才可以!在类内声明的时候就不需要::了,直接 返回值类型 函数名(参数表) 就可以了!