在#define MACRO

时间:2017-02-28 04:22:35

标签: c++11 macros

是否可以在MACRO中将字符串附加到变量(函数/字段名称)?怎么样?

#include <iostream>
using namespace std;

#define T1(hoho) \
   void hoho(){}

#define T2(hoho) \
   void hoho_(){}  //append underscore

T1(happy)
T2(sad)

int main() {
    happy(); //<--- work OK
    sad_();  //<--- this function not exist (compile error)
    return 0;
}

我想将它用于某些(hacky-but-cool)函数生成,例如: -

#define T3(hoho) \
int hoho_;  \
void hoho_clear(){hoho_=0;}  \
int hoho_get(){return hoho_;}  

class Magic{
    T3(magicField)    //<-- use only 1 MACRO parameter
};

结果如下: -

class Magic{
    int magicField_;
    void magicField_clear(){magicField_=0;}
    int magicField_get(){return magicField_;}
};

我知道这不是一个好习惯。我保证,我很少使用它。

0 个答案:

没有答案