tcc(free.fr)はちょー使える。信じられん。まるでCインタプリタ。
このtccはコンパイラだが、コンパイル速度に最適化されており、暴力的なコンパイル速度を生かして、普通に
zsh# tcc test.c
とすると、実行までしてしまう。実行したときは実行ファイルは残らない。つまりインタプリタに見えちゃうのだ!!
制限はあるものの、だいたいのプログラムが動くので、使いでがある。見つけた制限事項は次の通り。
- システムコール直叩きが使えないことがある(stat等)。
- 複雑な(単に雑な?)構造体やtypedefが理解できないみたい(vipl.hでエラーになる)。
- コマンドライン引数の順番がきつい。たぶん、プログラムを実行するときに渡す引数と思われてしまうので。
あとはだいたい動いて、普通にライブラリの関数も呼べるし、ISO C99に完全準拠。それに少しのgcc拡張にも対応している。
これは非常に便利なツールとして使われていくだろう。
(追記)
実行するときはファイルを生成しない。一時ファイルを実行してるのかと思ったら、そうではないみたい。なるほど。
しかもオプションでメモリ境界のチェックまでしてくれるではないか!! 感動だ。—–