C ++源文件包含“唯一映射”?

时间:2013-02-22 00:05:37

标签: c++ c++11

在C ++ 11标准16.2.5中:

  

实现应为由一个或多个非数字组成的序列提供唯一的映射   数字(2.11)后跟句点(。)和单个非数字。第一个字符不应是数字。该   实现可能会忽略字母大小写的区别。

我根本不理解这个的背景或含义?

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

它似乎是来自周围段落的完全非查询。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

我认为这不是一个非顺序,“序列”指的是{{1>之间的 q-char-sequence h-char-sequence }和<对,或>对。

直接来自C标准的措辞(仅略有改动),在6.4.7中有另外的措辞:

  

两种形式的头名称中的序列都在实现定义中映射   对于标题或外部源文件名的方式,如6.10.2中所述。

后面的措辞在这种情况下更有意义。

我相信它确实意味着实现仅必需来支持该表单的包含文件和标头。这显然并不意味着"不起作用,因为措辞并没有说实现不会支持其他形式,并且还有其他措辞要求标题行为正确。