3. プログラムヘッダと宣言部
3.1. プログラムヘッダ (Program heading )
3.2. ラベル宣言部 (Label declaration part)
・識別子が利用可能なラベルの由来
Delphi の場合にはラベルに識別子が使えます。
この拡張は BLS Pascal (Turbo Pascal の前身) 由来のようです。
See also:
3.3. 定数定義部 (Constant declaration part)
(3.3.1.) 定数式 (Constant Expressions)
(3.3.2.) 型付きの定数 (Typed Constants)
・書き込み可能な型付き定数について
型付きの定数はDelphi 5 までは書き込み可能でした。実質的には初期化済み変数という事になります。
また、書き込み可能な型付き定数は静的変数として振舞います。
StaticVar.pas
program StaticVar;
{$APPTYPE CONSOLE}
{$J+} // Writable Const
var
i: Integer;
procedure A;
const
foo: Integer = 0;
begin
Inc(foo);
writeln(foo);
end;
begin
for i := 1 to 10 do
A();
end.
このコードの実行結果は以下の通りです。
1
2
3
4
5
6
7
8
9
10
型付きの定数の挙動は Delphi 2 から {$J}
コンパイラ指令で制御できるようになり、Delphi 6 において {$J-}
(書き込み不可能な型付き定数) がデフォルトとなりました。
つまり、Turbo Pascal や Delphi 1 では型付きの定数は常に書き込み可能でした。Delphi 2 のマニュアルには {$J-}
がデフォルトであるかのように書かれていますが、実際には {$J+}
がデフォルトです。
See also:
- WRITEABLECONST(書き込み可能な型付き定数)(Delphi)(DocWiki)
- Delphi のご先祖を辿る (Qiita)
- Pascal の勉強に使えそうな Pascal 処理系 (Qiita)
3.4. 型定義部 (Type definition part)
3.5. 変数宣言部 (Variable declaration part)
(3.5.1.) プログラムヘッダのパラメータ
(3.5.2) インライン変数宣言 (Inline Variable Declaration)
3.6. 手続き・関数宣言部 (Procedure and Function declaration part)
3.7. 識別子とラベルの有効範囲
索引
[ ← 2. データの概念: 単純型〔裏〕 ] [ ↑ 目次へ ] [ → 4. 動作の概念〔裏〕 ]