C 相邻字符和字符串文字标记

C 相邻字符和字符串文字标记,c,string,char,language-lawyer,c11,C,String,Char,Language Lawyer,C11,众所周知,在C中,您可以编写“a”“b”并获得“ab”。这在C11标准中进行了讨论: 在翻译阶段6中,由任何相邻字符序列和前缀相同的字符串文字标记指定的多字节字符序列被连接成单个多字节字符序列 短语“character and…”似乎暗示您可以通过编写'a'“b”获得相同的结果,但我从未遇到过这种用法,GCC和Microsoft编译器都拒绝使用它。我遗漏了什么吗?不,也许我们从那里的陈述中得到了错误的含义 请允许我引用C11,第§5.1.1.2章,翻译阶段,第6段 相邻的字符串文字标记被连接起来

众所周知,在C中,您可以编写
“a”“b”
并获得
“ab”
。这在
C11
标准中进行了讨论:

在翻译阶段6中,由任何相邻字符序列和前缀相同的字符串文字标记指定的多字节字符序列被连接成单个多字节字符序列


短语“character and…”似乎暗示您可以通过编写
'a'“b”
获得相同的结果,但我从未遇到过这种用法,GCC和Microsoft编译器都拒绝使用它。我遗漏了什么吗?

不,也许我们从那里的陈述中得到了错误的含义

请允许我引用
C11
,第§5.1.1.2章,翻译阶段,第6段

  • 相邻的字符串文字标记被连接起来

  • 在这里,我们对字符和字符串文字没有任何混淆,只清楚地提到了字符串文字。

    我认为应该读“字符串文字”,而不是“字符文字”。完整的段落在翻译阶段6,由任何相邻字符序列和前缀相同的字符串文字标记指定的多字节字符序列被连接到单个多字节字符序列中。如果任何令牌具有编码前缀,则产生的多字节字符序列被视为具有相同的前缀;否则,它将被视为字符串文字。是否可以连接不同前缀的宽字符串文字标记,如果可以,则对生成的多字节字符序列的处理由实现定义。和..它也在第6.4.5节字符串文本下。因此,很明显,该标准指的是字符串文字,而不是字符文字。我认为应该将其解释为“相邻字符串文字标记和前缀相同的字符串文字标记的任何序列”。这是一个非常混乱的缩写。