我想不出一个更好的方式来标题...
#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;
}
Run Code Online (Sandbox Code Playgroud)
这会导致错误,因为X()未在此范围内声明.是否有任何方法可以使Y存储X的副本(也就是说,在我定义Y时强制宏替换发生),使得它不再依赖于X存在?也许boost有一些预处理器的东西,或者可能有一个简单的方法.想法?