2011-12-19 15 views
4

可能性の重複:
Why i am not getting the expected output in the following c programme?ネストされたマクロ:拡張の注文

私は疑問を持っています次のコードのためのmacros.likeの評価のために、私は理解することはできませんよouputを:

#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) 

なぜ2番目のprintfでfが最初に展開されるのですか?

+3

に詳細に説明されている...マクロが展開されているかの結果だ、と自己参照マクロに影響を与えます。 – MByD

+0

thnxみんな...重複した投稿から私の答えを得た.. :) –

答えて

1

は、これは非常にうまくこの(正確に!)の質問はここに複数回頼まれたGNU CPP manual

関連する問題