今天拜读前辈的代码,看到了一种奇怪的用法:##。以为是C99的新标准,再翻查经典的 K&R,才发现原来早已是C语言的规范用法了。居然到今天才知道,真失败-_-!##是一种预处理运算符,用在宏定义中,在宏解析时将实际的参数进行连接。简单的例子就是 #define cat(a,b) a ## b 现在,在代码中使用 cat(t1,t2) 的效果就是 t1t2,连接起来作为了一个整体。##的一个很大的特点在于,对于枚举型的数据,##可以取到枚举的“名称”而不是枚举的“数值”。比如: enum { enumname1 = 2,