2011-12-19 85 views
4

可能重複:
Why i am not getting the expected output in the following c programme?嵌套宏:擴展的秩序

我有在macros.like以下代碼的評估順序懷疑我是無法理解在輸出中:

#include <stdio.h> 
#define f(a,b) a##b 
#define g(a) #a 
#define h(a) g(a) 
int main() 
{ 
    printf("%s\n",h(f(1,2))); 
    printf("%s\n",g(f(1,2))); 
    return 0; 
} 

輸出

12 
f(1,2) 

爲什麼f在第二個printf中的g之前先擴展?

+3

這(精確!)問題是問這裏不止一次。 – MByD 2011-12-19 10:30:57

+0

thnx球員...從重複的帖子得到我的答案.. :) – 2011-12-19 10:39:34

回答

1

它的宏如何擴大的結果,和對自我指涉的宏產生影響......對此進行了詳細很好地解釋了GNU CPP manual