我想不出更好的方式来表达标题...
#define X(c) c
#define Y(c) X(c)
#undef X
int main(int argc,char*argv[])
{
std::cout << Y(5) << std::endl;
return 0;
}
这会导致错误,因为 X() 未在此范围内声明。有没有办法让 Y 存储 X 的副本(又名,在我定义 Y 时强制进行宏替换),使其不再依赖于 X 存在?也许 boost 有一些预处理器的东西,或者也许有一个简单的方法。想法?