#define B 100+B
main()
{
int i= B;
}
私はそれが間違っていることを知っていますが、好奇心から、コンパイルすると次の奇妙なエラーが発生します。
「B はこのスコープで宣言されていません」。
なぜそうなのですか?このエラーが、置換後にコンパイラがマクロを削除したことが原因である場合、 B がAで使用できるようになる前にBが削除されている必要がある場合、次のコードはどのように機能するのでしょうか?
#define B 100
#define A 100+B
main()
{
int i= B;
int j =A;
}