有关单字母扩展名的C++头文件有什么特别之处?

Ben*_*igt 8 c++ include c-preprocessor

C++标准在第16.2节"源文件包含"中包含以下规则.它以某种方式使单字符文件扩展特殊.

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

这些文件名有什么特殊处理方法?头文件包含的上下文中的映射是什么,为什么它是唯一的?

Jon*_*ler 7

也就是说,以迂回的标准方式,头文件应"abyssinia.h"映射到文件系统中的唯一文件名,即使底层文件系统不支持 9.1 文件名 \xe2\x80\x94 认为具有 8.3 限制的旧式 DOS,或者文件名最多包含 14 个字符的最旧版本的 Unix。系统必须确保这些名称唯一地映射到不同的文件。

\n\n

它还表示实现可能会忽略大小写(这也意味着它可能不会忽略大小写)。如果它确实忽略大小写,则"ABYSSINIA.H""abyssinia.h"将映射到同一个文件;如果它不忽略大小写,那么它们将是两个单独的文件。请注意,Windows 和 Mac OS X 都具有保留大小写但不区分大小写的文件系统,至少在默认情况下是这样。

\n\n

我不确定为什么存在单个非数字限制;这可能意味着扩展名.hpp不能保证映射到唯一的名称。

\n\n

这都是对实施的限制;它基本上不会影响你作为一名程序员(除非你是一名编写实现 \xe2\x80\x94 的程序员,这意味着 C++ 编译器的实现),但你应该确保你的标头名称是唯一的,无论如何当然,为了获得最大的可移植性,您的标头名称应该.h以其他单字母扩展名结尾。

\n