[lex.ccon] 中 c-char 的定义可能存在矛盾
Possible contradiction in the definition of c-char in [lex.ccon]
[lex.ccon] 包含以下 c-char 定义:
C-字符:
源字符的任何成员 设置
除了 单引号’
、反斜杠或换行符
转义序列
通用字符名称
鉴于C
中的换行符是转义序列n
,上面的定义是不是有矛盾的?
PS:请注意,C++标准并没有真正定义什么是换行符。
不,当定义说"换行符"时,它表示实际的换行符,而不是特殊的双字符序列(反斜杠和n
(,编译器可以在特殊情况下(在常量字符串或字符文字中(将其解释为换行符。
C++ 标准确实说在翻译阶段 1 中为行尾指示符引入换行符,在翻译阶段 3 中将源文件分解为预处理标记(字符文字是预处理标记(和空白字符序列(包括注释(,每个转义序列(n
是转义序列(在翻译阶段 5 中转换为执行字符集的相应成员。
因此明确定义,在形成字符文字时,字符序列n
不会变成换行符,行尾指示符(以及翻译阶段 1 的所有细节都是实现定义的,但普遍认为行尾指示符在 Unix 和类 Unix 系统上是 LF,在 Windows 上是 CR+LF(已经变成了换行符。
相关文章:
- 未定义的引用,尽管存在符号,但 std::experimental::可选
- 将文件复制到自定义位置,存在字符串转换问题
- 将自定义 QMap 模板实例化以人类可读的形式保存在 QSettings 中
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- 用户定义的文本运算符(在原始模式下)存在问题
- 为什么当函数参数未定义为常量引用时存在无限递归?
- C++20 概念 如何定义带有参数的函数的存在?
- 生成文件缺少包含路径 尽管路径存在并已定义
- 标记未定义的颜色,并且颜色匹配系统中不存在样品
- 当存在用户定义的移动分配运算符时,已删除模板移动分配运算符
- 未定义的引用(但 nm 表示该函数存在)
- 为什么"stdint.h"的实现在UINT8_C的定义上存在分歧?
- 自定义开关功能中存在大量神秘错误
- 当模板重载可用时,检查是否存在函数的自定义重载
- 保证复制责任的行为是否取决于用户定义的复制构造函数的存在
- NTRUEncrypt:使用开源标准算法中的描述无法正确找到两个多项式的GCD,无法定义是否存在多边形的逆
- g++ 未定义的引用,尽管符号存在于 *.so 文件中
- C++'Undefined reference to'错误,尽管包含路径中的头文件中存在函数定义
- C++中的类定义存在问题
- 链接2019错误,但定义存在