源文件字符的 C++ 阶段 1 转换集:C++ 之前与之后、C++23 之前

C++ Phase 1 Translation Set of Source File Characters: Before vs. Post C++11, before C++23

提问人:mishar 提问时间:11/16/2023 更新时间:11/16/2023 访问量:30

问:

cppreference的翻译阶段页面,对于翻译的第一阶段(C++23之前),在其步骤2中有一个注释。那:

接受的源文件字符集是实现定义的(从 C++11 开始)

这在规范的工作草案中也得到了回应(例如,对于 C++20)。

鉴于在 C++23 之前,它似乎总是由实现定义的,用于如何将源代码文件的字节映射到基本源字符集的字符,那么自 C++11 以来,上述规则添加了什么?即拥有它与没有的净变化是什么?这可能只是一个阅读理解问题,但对我来说似乎不清楚,因为它接着说:

任何无法映射到基本源字符集中的字符的源文件字符都将替换为其通用字符名称(用 \u 或 \U 转义)或等效处理的某种实现定义形式。

例如,C++11 添加是否意味着由实现来决定哪些字符甚至考虑映射到基本源字符集或通用字符名称(即允许跳过源文件中的字符而不翻译它们)?否则,根据上面关于映射到基本源字符或通用字符名称或等效项的点,我不清楚这个 C++11 规则在该 cppreference 页面上第 1 阶段的第 1 步之外实现了什么,即:

源代码文件的各个字节(以实现定义的方式)映射到基本源字符集的字符

11 字符 转换 C++23 实现定义行为

评论


答: 暂无答案