这行:串联预处理:
#define hash_hash # ## #
会产生##
而是基于不是未定义行为:
如果结果不是一个有效的预处理标记,该行为是未定义 。
编辑:
换句话说,扩大hash_hash产生新令牌,由两个相邻的尖锐的迹象, 但这新令牌不是## 操作者 。
预处理标记的类别为:
预处理标记分为五大类:标识符, 预处理数字,字符串文字,标点符号和其他
是##
新的令牌属于其他类别如果没有UB。
请注意:请花些时间阅读与之相关的问题和答案,甚至在下载之前。
您认为未定义的行为意味着什么?这意味着它可以做任何事情。 –