2011-09-18 100 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() 

編輯:

我還沒有發現這樣一個問題: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()