- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

D Edit

いい例が思い浮かばなかったので、
適当に循環参照とかの実験。

すげー。
ユニット単位ではなく、変数(定数)単位で、初期化順序解決してるよ、コレ。

test.d

1
2
3
4
5
6
7
8
9
10
import test3;

const int foo = 1;
const int bar = test3.bar + 1;

void print()
{
  printf("test.foo = %d\n", foo);
  printf("test.bar = %d\n", bar);
}

test2.d

1
2
3
4
5
6
7
8
9
import test, test3;
const int foo = test3.foo + 1;
const int bar = test.bar + 1;

void print()
{
  printf("test2.foo = %d\n", foo);
  printf("test2.bar = %d\n", bar);
}

test3.d

1
2
3
4
5
6
7
8
9
import test;
const int foo = test.foo + 1;
const int bar = 1;

void print()
{
  printf("test3.foo = %d\n", foo);
  printf("test3.bar = %d\n", bar);
}

main.d

1
2
3
4
5
6
7
8
9
10
11
12
13
import test, test2, test3;

const int foo = test2.foo + 1;
const int bar = test2.bar + 1;

void main()
{
  printf("main.foo = %d\n", foo);
  printf("main.bar = %d\n", bar);
  test.print();
  test2.print();
  test3.print();
}

実行結果

main.foo = 4
main.bar = 4
test.foo = 1
test.bar = 2
test2.foo = 3
test2.bar = 3
test3.foo = 2
test3.bar = 1

Delphi Edit

Delphiの場合、ユニットのinterface部、implementaition部ごとに順番が決まるようで、Dの例のような循環参照はできない。

初期化順保障はされてるみたい。




Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2005-07-19 Tue 12:10:24 JST (5254d)