13

前処理されたバージョンのみを取得したいfile.cc。私がやったg++ -E file.cc、得た:

# 1 "file.cc"
# 1 "<command-line>"
# 1 "file.cc"

私は何を間違えましたか?

4

2 に答える 2

18

ソース ファイルに単純な main 関数が含まれていると仮定します。

$ cat file.cc
int main() {
    return 0;
}

次に、示したコマンドを使用すると、出力は次のようになります。

$ g++ -E file.cc
# 1 "file.cc"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "file.cc"

int main() {
    return 0;
}

質問に示されている出力は、file.ccが空のときに発生します。「空」とは、ファイルにコメント、または#ifdeffalse と評価される条件のブロックが含まれている可能性があることを意味することに注意してください。プリプロセッサはそれらをフィルターで除外するため、出力にも表示されません。

于 2012-09-19T07:17:12.397 に答える
8

ライン マーカーが必要ない場合は、 -P オプションを使用します。

-P
    Inhibit generation of linemarkers in the output from the preprocessor. This might
    be useful when running the preprocessor on something that is not C code, and will
    be sent to a program which might be confused by the linemarkers. 
于 2012-09-19T07:20:50.560 に答える