在预处理期间,我们通常会扫描所有宏
,但我有点困惑,预处理器是否还生成词法分析器实际获取的标记,并进一步扫描输入文件,
我经历过这个link 其中提到预处理标记分为五大类:标识符、预处理数字、字符串文字、标点符号等,那么标记是否仅在预处理状态下生成?
最佳答案
预处理的结果是 token 流。
大多数 token 是在宏扩展阶段之前生成的,但在宏扩展期间,可以使用 stringify ( #
) 和 token-concatenate ( ##
) 运算符创建新 token 。
预处理后,很多token需要重新分析,并且有可能某些预处理token无法重新分析为有效token。例如,2.3G是一个预处理数字标记,但它不对应于任何有效的数字标记。这将导致错误消息。
关于c - token 是在预处理之后计数还是仅在预处理过程中计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101633/