复制宏中的下一行

时间:2018-12-20 00:26:59

标签: c++ c++11 macros

我想制作一个“装饰器”之类的宏。看起来像这样:

#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();
    }
};

1 个答案:

答案 0 :(得分:2)

您不能那样做。在您的情况下,该宏的名称为 CLASS ,以标识该宏,然后括号中的内容作为该宏的参数。之后的所有内容都会被宏处理器忽略,并由编译器正常处理。

将代码包含在宏中的唯一方法是使其成为宏参数的一部分。

P.S。仅在绝对必要时才使用宏。它们会混淆代码并造成难以识别的错误。