宏相对于inline的优势:宏有inline不能替换的地方,即字符串化(#)和token pasting(##).
n Stringizing:Stringizing使用#将一个标识符转换为一个字符串,这在调试时很有用。例如:
#define DEBUG(x) cout << #x " = "<< x << endl;
这能打出任何变量的值。
n Token pasting: Token pasting使用##指示符来实现,这在制造代码时非常有用。它允许你使用两个不同的标识符将其粘在一起创建一个新的指示符。
#define FIELD(a) char* a##_string; inta##_size
class Record {
FIELD(one);
FIELD(two);
FIELD(three);
};