2009-07-24 7 views

答えて

13

使用#pragma message例えば:

+0

になり、今それは巧妙なトリックです! – xtofl

+0

1つのマクロの代わりにSTRINGXXXとSTRINGYYYを使用するのはなぜですか? – rpg

+0

__LINE__は数字であり、文字列に変換する必要があります。文字列 "__LINE__"がすべての場所にあるのを避けるために、別のマクロを使用します。 –

6

はあなたのソースコードに次のようなものを含めますあなたは

#pragma MESSAGE("TODO: testing") 

はそれが

2

あなたは出力文字列にソースファイルのいずれかで#pragma messageを使用することができるだけで、通常のコンパイラのメッセージのようにクリック可能なメッセージとして表示されます置けば、その後

#define MESSAGE(t) message(__FILE__ "(" STRINGXXX(__LINE__) ") : " t) 
#define STRINGXXX(x) STRINGYYY(x) 
#define STRINGYYY(x) #x 

そのファイルは前処理されています。

また、カスタムビルド前またはビルド後のステップが実行されると、「description」フィールドが標準出力にエコーされます。

1

Timo Geuschが言ったように:#pragma messageという指令が使われています。テンプレートメタプログラミングのエキゾチックな副作用として、それは計算機としてコンパイラを使用することも可能です

:)

template<int i> struct Message; 

template<int i> struct Fac { 
    static const int v = i * Fac< i-1 >::v; 
}; 

template<> struct Fac<1> { static const int v = 1; }; 

Message< Fac<10>::v > m; 

は、出力メッセージ

Line 10: error: aggregate 'Message<3628800> m' has incomplete type and cannot be defined 
関連する問題