预处理令牌和空白区域

时间:2014-11-05 16:24:13

标签: c

如果我有以下宏:

#define A 10 * 2

宏替换列表是否有5个预处理标记或只有3个?

根据C11标准,白色空间似乎是一个分离标记

  

预处理令牌的类别是:标题名称,标识符,   预处理数字,字符常量,字符串文字,   标点符号和单个非空白字符表示没有   词法匹配其他预处理令牌类别。

1 个答案:

答案 0 :(得分:7)

它有三个令牌:两个预处理数字,中间有一个*。空白不是一种象征。

您引用的行包含以下字词:single non-white-space characters;这不是空白。

标准继续说明令牌可以用空格隔开"那个"白色空间可能出现在预处理令牌中 仅作为标题名称的一部分或在字符常量中的引号字符之间 或字符串文字",所有这些都清楚地表明空格不是一个标记。