* clinearg に関する諸々の事々 * * document from Aug.14,1999 by d'm. ================================================================ ◎コンパイル ---------------- ○必要な環境 ・GCC, HAS, HLK ・GNU make ・libc ○必要なファイル ・clinearg.c, clinearg.h, clinearg.mak ・拙作ライブラリ/ヘッダ: comtype.h easymac.h dummyc.a, dummyc.h hufilec.a, hufilec.h ---------------- ○オブジェクトファイル (clinearg.o) の作成 コマンドラインから次のように実行します。 > make -f clinearg.mak より明示的にしたい場合は、 > make -f clinearg.mak clinearg.o ---------------- ○エラーメッセージ表示オブジェクトファイル (clargmes.o) の作成 コマンドラインから次のように実行します。 > make -f clinearg.mak clargmes.o ---------------- ○テスト実行ファイル (clinearg.x) の作成 コマンドラインから次のように実行します。 > make -f clinearg.mak clinearg.x ---------------- ○ clinearg.o を含む実行ファイルの作成の注意点 ・拙作のライブラリ dummyc.a, hufilec.a が必要です。必ずリンクして ください。 この2つのライブラリは、このソースパッケージに同梱されているはず です。 ================================================================ ◎大域関数仕様 ---------------------------------------------------------------- char *get_cmdline_arg(char ***argvp) 内容: コマンドライン引数を一つ取得します。 引数: argvp - コマンドライン引数テーブルアドレス格納変数アドレス 返値: コマンドライン引数アドレス 既に最後まで取得した後に、さらに取得しようとすると NULL を返す (*argvp) - 次に参照するコマンドライン引数テーブルアドレス 使用例) int main(int argc, char **argv) { : /* NULL に出会うまでループ */ while ((argp = get_cmdline_arg(&argv)) != NULL) { /* コマンドライン処理 */ } : } ※もうちょっと具体的な例が、clinearg.c の main() 関数にあります ので、ご参照ください。 ================================================================ ◎コンパイル時のマクロ定義 ---------------------------------------------------------------- TEST_MAIN_DEFINE (定義されているかだけが問題で、定義内容は無関係) 定義されていると、動作確認用の main() がコンパイルされ、単独の 実行プログラムが作成できるようになります。 また、自動的にエラーメッセージ表示マクロ INDIRECT_MES_PRINT も定義されます。 INDIRECT_ARG_ALLOCATE (定義されているかだけが問題で、定義内容は無関係) 定義されていると、ファイルから取り込んだコマンドライン引数を 別途確保したメモリに格納するようになります。 ただし、定義した場合に正しく処理されるかは確認していません。 定義されていない場合、ファイルから取り込んだ引数は static 配列に格納されます。 INDIRECT_MES_PRINT (定義されているかだけが問題で、定義内容は無関係) 定義されていると、インダイレクトファイルアクセス中にエラーが発生 した場合に、エラーメッセージを表示するようになります。 main() 定義マクロ TEST_MAIN_DEFINE が定義されていると、自動的に このマクロも定義されます。 CLINEARG_INDIRECT_FILE_OPT_STR (文字列を指定) インダイレクトファイルオプション文字列を指定します。 デフォルトは "-+-+-" で、この場合 > foo.x -+-+-indirect のようにして使用することになります。 ちなみに、オプション文字列とファイル名の間にスペースを入れて > foo.x -+-+- indirect のように指定することはできません。 CLINEARG_INDIRECT_FILE_CMNT_CHRS (文字列を指定) インダイレクトファイル中のコメント行開始文字を、文字列として 指定します。 ファイルから読み込んだ1行の『行頭』に、この文字列中のどれか 1文字があった場合、その行はコメント行となり、無視します。 デフォルトは "#;" で、この場合 '#' または ';' がコメント開始文字 となります。 例) # これもコメント行 ; これもコメント行 ; この次↓からはコメントじゃない -cfoo -b barbaz.qux ================================================================ [EOF]