如果我有以下宏:
#define A 10 * 2
宏替换列表是否有5个预处理标记或只有3个?
根据C11标准,白色空间似乎是一个分离标记
预处理令牌的类别是:标题名称,标识符, 预处理数字,字符常量,字符串文字, 标点符号和单个非空白字符表示没有 词法匹配其他预处理令牌类别。
答案 0 :(得分:7)
它有三个令牌:两个预处理数字,中间有一个*
。空白不是一种象征。
您引用的行包含以下字词:single non-white-space characters
;这不是空白。
标准继续说明令牌可以用空格隔开"那个"白色空间可能出现在预处理令牌中 仅作为标题名称的一部分或在字符常量中的引号字符之间 或字符串文字",所有这些都清楚地表明空格不是一个标记。