gpt4 book ai didi

c - 为什么 C99 对通用字符名称有如此奇怪的限制?

转载 作者:太空狗 更新时间:2023-10-29 16:07:41 25 4
gpt4 key购买 nike

6.4.3 Universal character names

A universal character name shall not specify a character whose short identifier is less than 00A0 other than 0024 ($), 0040 (@), or 0060 (`), nor one in the range D800 through DFFF inclusive.

除了这样的限制不再“通用”这一事实之外,我想不出这样的限制的充分理由。有人知道背后的故事吗?

最佳答案

D800DFFF 都不是有效代码点;它们是高代理和低代理,只能在 UTF-16 编码中成对出现,以表示基本平面之外的代码点。

另一个限制是避免通用字符名称与可以在 C 字符集中表示的字符发生冲突,以便编译器不必费心将通用字符名称解析为其 unicode 等价物。所以编译器没有义务识别写为 \u002B+ 或者知道 a\u0061 代表同一个名字。 ($@` 在注释和字符串之外的 C 程序中无效,因此不需要特别注意它们词法分析器。)

小于A0的代码点范围还包括控制字符和空格。 (C 不认为 \u00A0 是空格。)

关于c - 为什么 C99 对通用字符名称有如此奇怪的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20158472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com