CでCプリプロセッサを実装しています...
私は3つの機能を持っています:
- トライグラフ置換機能
- 回線継ぎ機能
- コメント削除機能
ただし、これらの関数はファイルに対して個別に機能します。
最初の関数はファイルを受け取り、出力として temp-file1 を生成するトリグラフを置き換えます
2 番目の関数は、入力として temp-file1 を受け取り、行を接合して別の temp-file2 を生成します。
3 番目の関数は、temp-file2 を入力として受け取り、コメントを削除して、さらに別の temp-file3 を生成します。
これで、主要な前処理タスクが temp-file3 で実行され、.i ファイルが最終出力として生成されます。
今、私には3つのオプションがあります:
- 一時ファイルを使用する
- パイプを使う
- 中間一時ファイルまたはパイプの代わりに文字列を使用します (つまり、一時ファイル 1、2、および 3 全体が 3 つの大きな文字列になります!!)
3つ疑問が…
- オプション 1 はオプション 2 よりも効率が悪いようです
- オプション2は完璧に思えますが、名前のないパイプのサイズによって制限されますか? (単一のプロセス、つまり関数 1 2 & 3 が次々に呼び出されるため) 一時出力サイズ > パイプの総容量の場合はどうなりますか?
- オプション 3... 前の 2 つよりも効率的で簡単ですか?
どのオプションを選択すればよいか教えてください。