我有一个如下所示的测试程序。
#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)
正确扩展。有人可以解释这里发生了什么吗?