C++ 源文件包含 "Unique Mappings"?

标签 c++ c++11

在 C++11 标准 16.2.5 中:

The implementation shall provide unique mappings for sequences consisting of one or more nondigits or digits (2.11) followed by a period (.) and a single nondigit. The first character shall not be a digit. The implementation may ignore distinctions of alphabetical case.

我根本不明白这句话的上下文或意思?

“提供唯一映射”是什么意思?从什么到什么的映射?独特而不是什么?什么序列?

它似乎与周围的段落完全无关。

最佳答案

在典型情况下,您在#include 指令中指定的内容将是一个文件名。这就是说它不一定是文件名。 “来自什么”是指令中的字符序列(h-char-sequenceq-char-sequence)。这可以映射到相同类型数据的某些(或多或少是任意的)源——例如,如果一个实现想要将 header 存储在某种数据库中,它可能会将它们映射到数据库中的记录。

至于“到什么”部分,它是故意含糊的——一个典型的实现使用文件名,但它几乎可以是任何其他东西,只要包含一个标题产生正确类型的结果——数据库记录上面提到的是一种可能性,但它旨在允许预编译头文件之类的东西,甚至将标准头文件的“知识”构建到编译器本身中,因此包含标准头文件可能只会在编译器中设置一个标志告诉它注意该 header 的内容。

关于C++ 源文件包含 "Unique Mappings"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014593/

相关文章:

c++ - 大规模递归函数中的段错误

c++ - 为什么 Foo::inner Constexpr 不会链接,而 User Literal{Foo::inner Constexpr} 会链接?

C++11:基于范围的 for 语句: "range-init"生命周期?

c++ - 在其他函数或循环中构造 lambda 时是否存在性能问题?

c++ - 是否可以在 C++ 中声明另一个函数时使用函数返回类型作为参数?

c++ - 笛卡尔积指数生成器

c++ - 为什么矩阵没有正确初始化/打印?

c++ - 将 libsvm 模型结构从 matlab 保存到可以在 C++ 中读取的 .model 文件

c++ - 字节顺序测试和类型转换

c++ - friend 模板特化声明中不允许使用 Consexpr?