next up previous contents index
Next: コマンドと便利な機能 Up: プログラムの作り方とその実行方法 Previous: matpを用いた行列の表示

C言語インターフェース

C言語で書かれたプログラムをmatcが生成した コードにリンクすることは,とても簡単である。 C言語でプログラミングする時に守らなければならない規則を以下に示す。 ライブラリ関数の詳しい説明は,別冊のライブラリ・リファレンス・ マニュアルを参照すること。            

1.
ファイルの先頭で,使用するクラスのヘッダーファイルをincludeする。 関数main()の最初で,行列クラス,多項式クラス,有理関数クラス, リストクラスの初期化関数MatInit(), PolyInit(), RatInit(), ListInit()を呼び出す。 その後,広域変数の行列,多項式,有理関数,リストを初期化する。

#include <matrix.h>
#include <polynomial.h>
#include <rational.h>
#include <list.h>

Matrix a, b;    // 広域行列変数
Polnomial c, d; // 広域多項式変数
Rational e, f;  // 広域有理関数変数
List g, h;      // 広域リスト変数

void main(argc, argv)
  int  argc;
  char *argv[];
{
  // 各クラスの初期化
  MatInit(); PolyInit();      
  RatInit(), ListInit();
                              
  // 広域変数の初期化
  a = MAT_DEF,  b = MAT_DEF;
  c = POLY_DEF, d = POLY_DEF; 
  e = RAT_DEF,  f = RAT_DEF;
  g = LIST_DEF, h = LIST_DEF;
  .....................
}


2.
局所変数の占有した領域を関数終了時に解放するために, 関数内で使用するクラスに応じて,関数の始めと終りに次の宣言と文を書く。          

void foo()
{
  Matrix     mat_last = MAT_DEF;
  Polynomial poly_last = POLY_DEF;
  Rational   rat_last  = RAT_DEF;
  List       list_last = LIST_DEF;

  .....................
  MatFrees(mat_last);
  PolyFrees(poly_last);
  RatFrees(rat_last);
  ListFrees(list_last);
}


3.
局所変数の行列,多項式,有理関数,リストは,宣言と同時に初期化する。

void foo()
{
  .....................
  Matrix     aa = MAT_DEF,  bb = MAT_DEF;
  Polynomial cc = POLY_DEF, dd = POLY_DEF;
  Rational   ee = RAT_DEF,  ff = RAT_DEF;
  List       gg = LIST_DEF, hh = LIST_DEF;
  .....................
}




Masanobu KOGA 平成10年8月19日