#defineで定義された関数は、別の#defineで定義された変数を使用できますか?

1954 ワード

defineはプログラムの事前コンパイル中にコードを置き換えることができることを知っています.先日、事前定義された関数で事前定義された変数を使用できるかどうかを尋ねる質問がありました.質問の説明は少し複雑かもしれません.詳細は以下の通りです.
#include 

#define N 3
#define M N*2
#define Add(n) N+n

int main()
{
    printf("The add val is: %d
"
,Add(5)); printf("The m val is: %d
"
, M); return 0; }

プログラムの実行結果は次のとおりです.
The add val is: 8
The m val is: 6

つまり、#defineは、呼び出し先であっても#define文を使用するすべての文を置換します.