【发布时间】:2020-09-20 00:01:43
【问题描述】:
我目前正在阅读 C++ 标准参考 (C++ 17)。
我阅读了以下有关标题名称的内容:
5.8 标题名称
标题名称:
" q-char-sequence "
h字符序列:
h-char
h-char 序列 h-char
h字符:
源字符集的任何成员,除了换行符和 >
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
源字符集的任何成员,除了换行符和 "
源字符集由以下字符组成:
5.3 字符集
基本源字符集由 96 个字符组成:
空格字符,控制字符代表水平制表符,垂直制表符,
换页和换行,以及以下 91 个图形字符:
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
_ { } [ ] # ( ) % : ; . ? * + - / ^ & | ~ ! = , \" '
我创建了一个名为 header³.h 的文件
我在 cpp 文件中尝试了以下内容,它编译时没有出现错误:
#include "header³.h"
我使用 GCC 版本 10.0.1 编译器编译了它。
所以现在我想知道为什么要编译这个。
有什么我忽略或误解的地方吗?
【问题讨论】:
-
gcc 实现了许多 C 或 C++ 标准中未指定的东西。这显然是其中之一。 gcc 并不真正关心每个源文件的名称是什么。一个特定名称的文件中的 C 或 C++ 代码与具有不同名称的文件中的相同 C 或 C++ 代码一样好。
-
我猜大多数编译器都可以使用在文件系统上有效的任何名称。
-
根据this identifier reference,允许使用大量的 Unicode 字符。您确定特定角色不在允许的集合之一中吗?您是否尝试过以严格的标准合规性进行构建(没有 GCC 特定的扩展)?你如何建立你的minimal reproducible example?
-
我会尝试关闭 GCC 特定的扩展。没想到。非常感谢:)
-
更不用说编译器"searches for the file in implementation-defined manner"(强调我的)。