我尝试搜索C99规范,但“:”匹配每一个页面,“冒号”没有找到每一个用法.同样的,通过玩具C parsers(我明白lex / yacc aren’t capable的解析C),我似乎只是找到部分结果.
这些是我知道使用冒号的场景:
>条件运算符
>位字段
>标签
C中是否有其他语言功能使用冒号?
解决方法
6.4.6 Punctuators
….3 In all aspects of the language,the six tokens
<:
:>
<%
%>
%:
%:%:
behave,respectively,the same as the six tokens 79)
[
]
{
}
#
##
except for their spelling.80)
79) These tokens are sometimes called ‘‘digraphs’’.
80) Thus
[
and<:
behave differently when ‘‘stringized’’ (see 6.10.3.2),but can otherwise be freely interchanged.
作为附注,C标准阐述了以下术语:
The term “digraph” (token consisting of two characters) is not
perfectly descriptive,since one of the alternative preprocessing-tokens is%:%:
and of course several primary tokens contain two
characters. Nonetheless,those alternative tokens that aren’t lexical keywords are colloquially kNown as “digraphs”.
In 1994 a normative amendment to the C standard,included in C99,supplied digraphs as more readable alternatives to five of the trigraphs. ….
Unlike trigraphs,digraphs are handled during tokenization,and any digraph must always represent a full token by itself,or compose the token
%:%:
replacing the preprocessor concatenation token##
. If a digraph sequence occurs inside another token,for example a quoted string,or a character constant,it will not be replaced.
原文地址:https://www.jb51.cc/c/113628.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。