1

私はgnu cppいくつかのテストに使用していますが、それが#includeマクロを保持し、その間に他のユーザー定義マクロを拡張することを願っています。出来ますか?これがコードの一部です(foo.c):

#include <stdio.h>
#define NEWLINE(str) str "\n"
int main(){
  puts(NEWLINE("foo"));
}

そして、私はその結果が次のようになることを願っていcpp foo.cます:

#include <stdio.h>
int main(){
  puts("foo\n");
}
4

3 に答える 3

1

スクリプトを使用して、すべての#includeをコメントアウトし、cppを実行してから、これらのコメントを削除できます。

于 2012-12-18T08:51:51.933 に答える
0

いいえ、できません。#ただし、行情報は通常、プリプロセッサ出力で始まる行で利用できます。

おそらくgppのような他のプリプロセッサを使用することができます

于 2012-12-18T08:18:22.067 に答える
0

私があなたを正しく理解しているなら、あなたはプリプロセッサを使って特定の部分だけを前処理し、他の部分は前処理したくないでしょう。これは一般的に不可能です。これを行う唯一の方法は、ソースに条件を追加することです。つまり、たとえば#ifdef#endif展開する部分の周囲を使用して、コマンドラインで定義をプリプロセッサに渡します。

于 2012-12-18T08:21:10.387 に答える