【发布时间】:2015-06-05 10:48:52
【问题描述】:
众所周知,在 C 中您可以编写 "a" "b" 并得到 "ab"。这在C11 标准中进行了讨论:
在翻译阶段 6,由任何相邻字符序列和相同前缀的字符串文字标记指定的多字节字符序列连接成单个多字节字符序列。
短语“字符和...”似乎暗示您可以通过编写'a' "b" 获得相同的结果,但我从未遇到过这种用法,GCC 和 Microsoft 编译器都拒绝它。我错过了什么吗?
【问题讨论】:
-
我认为应该读作“字符串文字”,而不是“字符文字”。
-
完整的段落是在翻译阶段6中,由任何相邻字符序列和相同前缀的字符串文字标记指定的多字节字符序列连接成单个多字节字符序列。如果任何标记具有编码前缀,则生成的多字节字符序列被视为具有相同的前缀;否则,它被视为字符串文字。是否可以连接不同前缀的宽字符串文字标记,如果可以连接,则对生成的多字节字符序列的处理由实现定义。 和..
-
它也在 6.4.5 字符串文字部分下。所以很明显,标准指的是字符串文字,而不是字符文字。
-
我相信它应该被解释为“任何相邻的字符串文字标记和相同前缀的字符串文字标记的序列。”这是一个非常令人困惑的收缩。
标签: c string char language-lawyer c11