You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取C预处理器的有效标记分隔符列表?

C预处理器标记分隔符问题解答

测试案例

测试代码

#define foo 123

foo
_foo
->foo
&foo

预处理输出

执行gcc -E命令(仅预处理,不编译)后,输出如下:

123
_foo
->123
&123

结论

从输出结果可以明确:_foo没有被拆分替换,说明下划线_不是C预处理器的标记分隔符,它属于标识符的合法组成部分,_foo是一个完整的标记。

标记分隔符获取渠道

最权威的来源是C语言官方标准(如C99、C11、C17/C18),其中明确规定了预处理器的标记拆分规则及有效分隔符类型:

  • 空白类分隔符:空格、制表符、换行符、换页符、垂直制表符
  • 注释:/*...*/块注释和//单行注释会被预处理器视为空白,起到分隔作用
  • 运算符/标点符号:例如->、&、+、(、)、;、,等,当这类符号与标识符、数字等非符号类标记相邻时,会成为标记的分隔边界
  • 特殊说明:字符串字面量、字符常量内部的字符不会被当作分隔符处理

此外,GCC的官方文档也会说明其对C标准的实现细节,但优先参考C语言官方标准是最准确的。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:50:03