C言語-トランスレータ(mbas to C)
前へ 目次へ 次へ 

 7. ファイルの分割とMAKEコマンド

ファイルの分割

 このまま残りの命令や制御文の処理を追加していくと、プログラムファイルが大きくなり、コンパイルなどの処理が遅くなる。ここではコマンド処理の関数(mbt_input,mbt_print,ptab)を別のファイルmbt_sub.cに分割する。
 現在のプログラムファイルmain08.cをファイルmain09.cとしてコピーを作成しておく。

  1. ファイルmain09.cをコマンド処理用関数群のファイルmbt_sub.cにコピーする。
  2. ファイルmain09.cから関数mbt_input、mbt_printとptabを削除する。
  3. 関数プロトタイプ宣言には、その関数が別のファイルにあることを示すextern(外部参照)を付けて宣言する。
       6: /* 関数のプロトタイプ宣言 */
       7: extern  void    mbt_print(void);
       8: extern  void    mbt_input(void);
       9: extern  void    ptab(void);
      10: extern  char    *get_shiki(void);
  1. ファイルmbt_sub.cから関数mainを削除する。
  2. グローバル変数tabはファイルmain09.cで宣言されているので外部参照を表すexternを付けて宣言する。また、初期値(=1)も削除する。
  11:  /* グローバル変数 */
  12:  extern int     tab;
[main09.c]
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:

80:
81:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "gettoken.h"
/* 関数のプロトタイプ宣言 */
extern void    mbt_print(void);
extern void    mbt_input(void);
extern void    ptab(void);
extern char    *get_shiki(void);       /* getshiki.c */
/* グローバル変数 */
int     tab = 1;
void main(int argc, char *argv[])
{
<< 省略 >>
    printf("}\n");
}


[mbt_sub.c]
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:

41:
42:
43:

72:
73:
74:

82:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "gettoken.h"
/* 関数のプロトタイプ宣言 */
void    mbt_print(void);
void    mbt_input(void);
void    ptab(void);
extern char *get_shiki(void);       /* getshiki.c */
/* グローバル変数 */
extern int     tab;
void mbt_print(void)
{
<< 省略 >>
}
void mbt_input(void)
{
<< 省略 >>
}
void ptab(void)
{
<< 省略 >>
}

 

MAKEコマンド

 コンパイルに必要なファイルは、main09.c, mbt_sub.c , gettoken.c と getshiki.c の4つである。

cc  main09.c  mbt_sub.c  gettoken.obj  getshiki.obj

 分割したファイルが増えてくるとコンパイルするコマンドも長くなるので、makeコマンドを使用する。
 次のようにコンパイルに必要なファイルを設定ファイルmakefileとして作成する。

MAIN = main09      #←メインのファイル名(必要に応じて変更する)
SUB = mbt_sub      #←サブのファイル名(必要に応じて変更する)
OBJ = $(MAIN).obj  $(SUB).obj \
      gettoken.obj getshiki.obj

all:    mbt.exe
mbt.exe: $(OBJ)
[Tab]lcc -o mbt.exe  $(OBJ)

$(MAIN).obj:    $(MAIN).c
$(SUB).obj:     $(SUB).c
gettoken.obj:   gettoken.c gettoken.h
getshiki.obj:   getshiki.c

 makeと入力するだけで、必要なファイルが自動的にコンパイルされる。コマンドmakeでコンパイルしたとき、メインのファイル名に関係なく、できあがる実行ファイル名はmbt.exeとなる。


前へ 目次へ 次へ 
Copyright © 2001 Hiroshi Masuda 

 

 

inserted by FC2 system