我写了以下代码:
#define GATE(name, num)do{\
name##list[num] = #name;\
}while(0)
char* name[] = {"hello", "world", "byebye"};
int i;
for(i = 0; i < 3; i++)
{
GATE(name[i],0);
}
显然,我无法得到我想要GATE(name[0],0)
的被hellolist[0] = "hello"
, 但是替换的东西name[0]list[0] = "hello"
,这可能导致 gcc 错误。
我想知道如何使用宏制作我想要的东西?