TinyCC

スクリプト的にファイルから読み込んだC言語のコードをコンパイルして実行させる事によって拡張性を持たせられるこのライブラリを使っていて思う事があるのでメモ。使い方が色々わかってないのか苦労する。

まずエラーの原因がわかりにくい。どのシンボルにエラーがあるのかとかさっぱり。エラーメッセージに出る数字は行番号だった。問題の記述が関数内にある場合はtccgen.cのgen_function内で設定されるグローバル変数のfuncnameに関数名が入るっぽい。しかし本格的なCのコンパイラに比べたらちゃんとしたエラーメッセージの出力には綿毛程も期待しちゃ駄目なのかも。

ホストアプリケーションで動かすスクリプトとして利用する場合のソースデバッグの方法がわからない。ホスト側で登録した関数をスクリプト側で確認したい変数を引数として呼び出してホスト側のVisualStudioのデバッガで内容を確認をしてるけれど効率は悪いなぁ。だけれどDLLをビルドしなくても処理を拡張出来るのはなんだか気楽で良いし…。

C99にちゃんと対応していないのでスコープ内で変数宣言は頭に持ってこないと駄目だった。これはいつも思うけど苦しいなぁ。問題がわかるようにエラーメッセージで出力してくれないのもきつい。

配列や構造体の初期化を {} でやろうとすると、memset を使うみたい。エラーメッセージでsymbolが無いって言われた。

標準Cライブラリにある関数は #include ってやるだけで自動的に使えたらいいなぁ。。シンボルはホスト環境のを引っ張ればサイズが節約できるんじゃ。って自前でtcc_add_symbolしまくれば良いのかな。。