(toppers-users 507) TOPPERS/JSP のコンフィグレータ
Tatsuhiko Matsukawa
KFC00725 @ nifty.ne.jp
2002年 9月 5日 (木) 11:15:46 JST
お世話になっております。
TOPPERS/JSPのコンフィグレータの中をの覗いているのですが、いくつか気に
なる点がありましたので、ご報告させて頂きます。
以下、コンフィグレータのビルドはVisualStudio Ver6を用い行っていますの
で、処理系によっては結果が異なるかもしれませんが。
(1) コンフィグレータの出力である、kernel_cfg.c/kernel_id.hの出力を
mpstrstreamのデストラクタ中で行っているようですが、これがmain()の
try/catchブロックの外になってしまうため、このファイル書き出しでエ
ラー(出力先がリードオンリとか)となった場合、本来のエラーメッセージ
(「ファイルが作れません」)が出ません。(Windowsでの実行の場合、
"Abnormal program termination"になります。)
(2) 単に使い勝手の問題ですが・・・(これも上記(1)同様、デストラクタでフ
ァイル出力を行っていることに起因すると思われます。)
コンフィグレーションファイルの解析中にエラーとなったような場合でも
ファイルkernel_cfg.c/kernel_id.hが作成されてしまいます。make等から
コンフィグレータを呼び出しているような場合、エラーでも新しいタイム
スタンプのこれらのファイルが作成されてしまうと、(ソースを修正せず
に)再度makeを実行した場合に、コンフィグレータが実行されなくなって
しまいます。
(3) ご承知の上でやっていらっしゃるならいいのですが・・・・
jsp_perser.cppがperser.cppよりも先にリンクされるとプログラムが正常
に動作しません。具体的には、perser.cpp642行の
map<string, class ParseUnit *> Directive::container;
のコンストラクタが、jsp_perser.cpp204行の
DECLARE_DIRECTIVE(assigner,"assign_id")
のコンストラクタよりも先に処理されるようにリンクされないと、正常に
動作しません。(StaticAPI::containerも多分同様)
以上、ご参考まで。
************************
松川竜彦
KFC00725 @ nifty.ne.jp
************************