input.c
ファイルにシステムヘッダが含まれていると、プリプロセッサが見つからない場合にクラッシュするのが普通です。
最初(リストは非網羅的である)このような何かを達成し、あなたのコード内のシステムヘッダのすべて#include
を削除するためにgrep -v
を使用することができます。
grep -vE "(stdio|stdlib)\.h" code.c > code_.c
あなたはインスタンスの取得:
#define EXITCODE 0
int main(){
int i = EOF;
printf("hello\n");
return EXITCODE;
}
次に前処理:
S:\c>gcc -E code_.c
# 1 "code_.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "code_.c"
int main(){
int i = EOF;
printf("hello\n");
return 0;
}
注意してください。プロセッサは定義されていない関数やマクロを気にしません。あなたはコードを前処理してしまいます(マクロも展開されます)。
もちろん、すべてのファイルを処理する必要があります。つまり、一時的なソースファイルを作成してそこから作業する余分なレイヤーのツールを意味します。
は解決策をい[どのように私は地元のヘッダーにプリプロセッサを実行しますか?](https://stackoverflow.com/questions/20889460 /)ヘルプ?これはC++の質問に対する答えですが、アイデア(とスクリプト)もCのコードで直接動作します。 –
空のファイルなどを作成する必要がないので、私自身のソリューション[https://stackoverflow.com/a/45786694/7392560]ははるかに簡単です。 –
マシンにHaskellがインストールされている場合は、あるいは予めビルドされたコピーを見つけたら、 'cpphs'を使うほうが良いでしょう。 –