当我的 C ++ 书中说,如果我有五个名为fOnePrint
,ftwoprint
,fthreeprint
,fourprint
的函数,我感到非常困惑,和fFivePrint
,您需要使用##
声明它们,
你这样做:
#define fPrint(x) f##x## print
有人可以向我解释如何使用这个##
连接宏和简单的例子吗?
我正在使用MS Visual C ++ 2010 Express。
答案 0 :(得分:1)
最简单的例子:
#define XY(x,y) x##y
翻译
XY(1,2)
至12
。
类似地,
#define fprint(S) f##S##print
会翻译
fprint(One)
到fOnePrint
fprint(Two)
到fTwoPrint
等等。
答案 1 :(得分:0)
使用##
运算符没有任何强制性。但是,如果您愿意,可以通过写作,例如:
fPrint(two)("format string %d\n", value);
看起来有点好笑。但是,fPrint(two)
宏会扩展为
ftwoprint
然后以下括号可能会使代码成为对函数的有效调用。没有什么可以阻止你写这个:
ftwoprint("format string %d\n", value);
宏观上有一个标志性的好处还远未明确。