C言語-トランスレータ(mbas to C) |
7. ファイルの分割とMAKEコマンド
ファイルの分割
このまま残りの命令や制御文の処理を追加していくと、プログラムファイルが大きくなり、コンパイルなどの処理が遅くなる。ここではコマンド処理の関数(mbt_input,mbt_print,ptab)を別のファイルmbt_sub.cに分割する。
現在のプログラムファイルmain08.cをファイルmain09.cとしてコピーを作成しておく。
6: /* 関数のプロトタイプ宣言 */ 7: extern void mbt_print(void); 8: extern void mbt_input(void); 9: extern void ptab(void); 10: extern char *get_shiki(void);
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 |