Next: C++ Up: プログラムから直接PAD図を描く Previous: プログラムから直接PAD図を描く |
CC言語のプログラムからPAD図を直接描くには、
とする。 但し、拡張子が .c のファイルを変換する場合には -c オプションは省略できる。 C言語のパーサは、c2pad である。 これを直接起動してプログラムをPADELに変換するには、
とする。この場合は -c オプションは省略できない。 C言語のプログラムは、各関数ごとにPAD図を描いていく。 各関数名がそれぞれのPADのタイトルになる。 また、関数の外にある大域変数はすべて読み捨てられる。 関数内でも、-O オプションを指定すると、初期化していない 変数宣言は読み捨てることができる。 デフォルトでは、文末の ; (セミコロン)はPAD図には出力しないが、これは -semicolon オプションで出力させることもできる。 C言語のプログラムを変換する上で最も注意すべきなのは、#ifdef など のプリプロセッサによる条件コンパイルを制御する部分である。 あるプログラム foo.c のPAD図を描かせるとしよう。この foo.c をコンパイルする時、もしも
と、-DJAPANESE を指定しているとすれば、pad2ps シリーズでPA D図を描かせる時も、
のように、-D オプションを使って定義してやる必要があるだ ろう。 この時、指定形式がCコンパイラとは少し違うので注意して欲しい。 ところが、Cコンパイラはわざわざ指定しなくても、その環境や機械ごとにデフォ ルトで定義するものがいくつかある。 また、pad2ps シリーズは #include <stdio.h> など を無視するので、ヘッダファイル内で定義されているものも見落としてしまう。 そこで、定義すべきシンボルはすべて -D オプションで指定してやるべき である。 その際、-ifdef オプションを使って、
としてやれば、定義することでプログラムが変化するシンボルの一覧を出力して くれるので、その中から適当に定義してやればよい。
C言語のプログラムは、ほとんどのもののPAD図を描かせることができるだろ
う。
現在変換できないのは、マクロを使っていて見かけ上C言語の文法に合わなくなっ
てしまった場合のみである。
特に
#define NUMBER(X) { int a; for( a='0' ; a<=X ; a++) putchar(a);} のように、; (セミコロン)で終了していなくてエラー、という場合が多い。 そのような時は、仕方ないので手で修正してやるしかない。 エラーにならなくても、たまたまうまくいっただけで、PAD図の形が変になっ ている、という可能性もある。 結局、マクロを大いに利用しているプログラムを変換する場合には、よく注意す るしかない。
|
プログラムのPAD図自動描画ソフト pad2ps に戻る。 吉田 誠一のホームページ に戻る。 Copyright(C) Seiichi Yoshida (comet@aerith.net). All rights reserved. Sat Nov 9 21:27:17 JST 1996 |