next up previous contents index
Next: 関数の定義 Up: 関数の宣言 Previous: 関数の宣言

   
require修飾子付き関数宣言

  関数宣言をrequire修飾子付きで行うと,その関数が定義されている ファイルを指定することができる。例えば,

void mg_main(), mg_sub1(), mg_sub2() require "mg.mm";


は,関数mg_main()mg_sub1()mg_sub2() がファイルmg.mmで定義されていることを宣言する。この宣言により, 3個の中のどの関数が呼ばれても,自動的にファイルmg.mmが 読み込まれる。ファイルが1度読み込まれれば,別の関数が呼ばれても mg.mmが再読み込みされることはない。

従来は,関数名とファイル名が一致しなければ,宣言された関数が呼び出されても 必要なファイルが自動的に読み込まれなかった。require修飾子を用いれ ば関数名と異なる名前のファイルに関数を定義できる。例えば,


Matrix PoleAssignSISO() "poleasgn.mm";


によって,長い名前の関数PoleAssignSISO()を短い名前のファイル poleasgn.mmに保存できるので, DOSのようにファイル名に 厳しい制限のあるOSでも,自由に関数名を決められる。

    宣言されていて定義されていない関数が呼び出されると,その関数が定義され ているファイルが,環境変数MATXINPUTSで定義されているディレクトリ群や デフォルトmmファイルディレクトリから再帰的に検索される。 ファイルやディレクトリの数が多くなると検索に時間がかかるが,requrie 修飾子で関数が定義されているファイルを指定すれば,検索時間が短縮される。 例えば,


List bode(...) requrie "control/bode.mm";


によって,関数bode()は検索対象のディレクトリから相対パスが control/bode.mmであるファイルに定義されていることが分かるので 短い時間で発見される。


Masanobu KOGA 平成10年8月19日