以下是“##”的含义?C++宏中“##”的含义是什么?
#define CC_SYNTHESIZE(varType, varName, funName)\
protected: varType varName;\
public: inline varType get##funName(void) const { return varName; }\
public: inline void set##funName(varType var){ varName = var; }
以下是“##”的含义?C++宏中“##”的含义是什么?
#define CC_SYNTHESIZE(varType, varName, funName)\
protected: varType varName;\
public: inline varType get##funName(void) const { return varName; }\
public: inline void set##funName(varType var){ varName = var; }
运算符##连接了两个参数,在它们之间不留空格:
#define glue(a,b) a ## b
glue(c,out) << "test";
这也将被翻译成:
cout << "test";
它加到令牌他们之间没有留下空白。基本上,如果你没有足够的##有
public: inline varType getfunName(void) const { return varName; }\
预编译器不会与参数值替换funName
。使用##
,get
和funName
是单独的标记,这意味着预编译器可以替换funName
,然后连接结果。