我想制作一个“装饰器”之类的宏。看起来像这样:
#define CLASS(name) \
class name\
{\
void DoClassStuff()\
{\
int result = //COPY CODE FROM THE NEXT LINES AND CALL IT;\
}\
};
CLASS(MyClass)
int GonnaBeCopied() {
return 10;
}
结果应类似于:
class MyClass
{
void DoClassStuff()
{
int result = GonnaBeCopied();
}
};
答案 0 :(得分:2)
您不能那样做。在您的情况下,该宏的名称为 CLASS ,以标识该宏,然后括号中的内容作为该宏的参数。之后的所有内容都会被宏处理器忽略,并由编译器正常处理。
将代码包含在宏中的唯一方法是使其成为宏参数的一部分。
P.S。仅在绝对必要时才使用宏。它们会混淆代码并造成难以识别的错误。