2013-02-21 7 views
8

要約:C++プリプロセッサの出力には、<built-in>といういくつかの行が含まれています。私はこれらが何であるか知りたいのです。C++プリプロセッサの出力で<built-in>とは何ですか?

詳細:私はclang++ -Etest.cppという名前のファイルに次のコードをコンパイルするとき

g++からの出力は類似している)次のよう

#include <iostream> 

int main() 
{ 
    std::cout << "Hello World!" << std::endl; 
    return 0; 
} 

出力の最初の数行です。

#1 "TEST.CPP"
#1 "TEST.CPP" 1つの
#1 "<内蔵>" 1つの
#1 "<組み込み>" 3
#156 "<組み込み>を" 3
#1 "<コマンドライン>内蔵の」1つの
#1 "<>" 2
#1 "TEST.CPPは" 2

私の質問は<built-in>文の意味何をすべきかです。

答えて

2

マクロは "1"に展開され、組み込みの場合、マクロはデフォルトで定義されています(例:__cplusplus)。コマンドラインの場合、マクロはコマンドラインで定義されています。つまり、 。

事前に定義されたマクロのリストを見ることができます:

cpp -dM foo.h 
+2

私はまた、少なくとも '.cpp'ファイルのために、人間が読める形式の出力を得るために-Eスイッチを必要とするように見えます。また、出力が表示される順序は、どのマクロが適用されるかに対応していますか?私が含むテストケースでは、 '#156" "3"が何をしているのか把握しようとしています。 –

+0

この順序は、マクロが適用される順序に対応します。 '-dN'フラグを試してください。それはそれを追跡するのに役立ちます。 – perreal

関連する問題