是否可以在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_;}
};
我知道这不是一个好习惯。我保证,我很少使用它。