#define foo 123
foo
_foo
->foo
&foo
在上述文件上运行
gcc -E
会输出以下内容:
123
_foo
->123
&123
这表明
_
不是标记分隔符,而 _foo
是一个完整的单词。
在哪里可以找到 C 预处理器的有效标记分隔符列表?
我可能会被语言律师嘲笑。但这是我阅读规范的方式。
C/C++ 中的标识符标记(不包括字符串文字)是从行首或空格之后开始的任何序列,其中第一个字符是字母 (
a-z
、A-Z
) 或下划线 (_
) ) 后跟任意数量的字母、数字或下划线。换句话说,下划线像任何其他字母或数字一样使标记唯一化。
或者更正式地说,标识符标记是这个正则表达式:
[a-zA-Z_]([a-zA-Z0-9_])*