私は以下のようなテストプログラムを持っています。
#define TEST(A,B) A
#define TEST2(A,B) (A,B)
#define TEST3(A,B) TEST TEST2(A,B)
int main()
{
TEST3(Hello,World) //This will expand to TEST (Hello,World)
TEST (hello, World) // This will expand to hello
}
はTEST3
""に展開されますが、定義TEST (Hello,World)
を使用してさらに展開されることはありません。私は当初、それは定義の間と定義内のTEST
スペースによるものだと思っていました。しかし、の単純な呼び出しは適切に拡張されます。誰かがここで何が起こっているのか説明できますか?TEST
TEST2(hello, world)
TEST3
TEST (hello, world)