int main()
{
i/*nt*/a = 10;
return 0;
}
如果我有这样的代码并且想要计算令牌,那么它是14还是13个令牌?
它是有效的写变量名之间的评论,你可以假设int i
,int a
,int ia
是全局定义?
注释在程序翻译的第3阶段中被删除*:每个注释都替换为一个空格字符。因此,此评论/*nt*/
绝对不是令牌。
如果没有int
,main
,i
,a
或return
定义为预处理的宏,解析程序生成14个令牌(未13):
int
main
(
)
{
i
a
=
10
;
return
0
;
}
除非i
使用typedef
语句将其定义为类型,否则会存在语法错误,因为i a
它与C语法中的规则不匹配。
*此行为在ANSI-C或C89中指定。一些古老的编译器的行为略有不同,导致令牌粘贴,但是这种特性仅在历史上有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句