2011-09-18 28 views
0

可能性の重複:まもなく
C Preprocessor, Stringify the result of a macroC/C++マクロの評価順序

#include <iostream> 

float pi(){ return 3.14; } 

#define PRINT(x) std::cout << #x << std::endl; 

#define PI pi() 

int main(int argc, char *argv[]) 
{ 
    PRINT(PI) 
    PRINT(pi()) 
    return 0; 
} 

結果:

PI 
pi() 

マクロ引数で前処理されたデータだけを取得する方法はありますか?結果として得るには

pi() 
pi() 

?私はこの質問気づいていない

:EDIT

C Preprocessor, Stringify the result of a macro 重複を...

+0

@j_kubikを、あなたはあなた自身の質問を閉じることができますならば欲しいです。 –

答えて

0

別のヘルパーマクロ追加:

#define QU(x) #x 
#define PRINT(x) std::cout << QU(x) << std::endl; 
#define PI pi()