局部类型或匿名类不能用作模板参数。
C++ 不支持函数嵌套,但是我们可以通过函数对象来间接实现它。
#
数字符(或称‘字符串化’操作符)把扩展后的宏参数转化成字符串常量。 它仅与带参数的宏一起使用。
如果它在宏定义中定义在形参前面,那么由宏调用传递进来的实参是被引号括起来的,并且被当做一个字符串语意来对待。
这个字符串会替代每一个在宏定义中出现的‘字符串化’的操作符和形参。
符号传递操作符
双数字符(或称“符号传递”操作符),有时也被称为合并操作符,用在类似对象以及类似函数的宏中。 它允许分开的若干符号被合并成一个符号,因此它(##)不能作为宏定义中第一个或者最后一个出现的符号。
除了以下情况,尽量避免使用预处理宏:
- #include 守卫
- 增强可移植性或方便调试的条件编译(在 cpp 文件中,而不是在 .h 文件中)。
- 使用 #pragmas 来禁止一些无意义的警告。#pragmas 通常应该放在 “移植性的条件编译” 守卫中以防止编译器不能识别该指令而发出警告。
文章来源:
http://my.donews.com/robinchow/2007/02/11/wkibsjwatiheajluxlmvybkwnutbvifrtotm/