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

11
C++标准第16.2节“源文件包含”中规定了以下规则,使单个字符的文件扩展名变得特殊。实现应为由一个或多个非数字或数字(2.11)序列后跟句点(.)和单个非数字组成的序列提供唯一映射。第一个字符不应为数字。实现可能会忽略字母大小写的区别。这些文件名得到什么特殊处理?在头文件包含的上下文中,映射是什么意思?为什么它必须是唯一的?
1个回答

7
它以迂回的标准方式表达,例如,“abyssinia.h”之类的头文件应映射到文件系统中的唯一文件名,即使底层文件系统不支持9.1文件名 —— 想想旧式DOS的8.3限制或最早版本的Unix对文件名最大14个字符的限制。 系统必须确保这些名称被映射到不同的文件中。
它还说,实现可能忽略大小写(这也意味着它可能不区分大小写)。 如果它忽略大小写,则“ABYSSINIA.H”和“abyssinia.h”将映射到同一个文件;如果它不区分大小写,则它们将是两个单独的文件。 请注意,Windows和Mac OS X都具有区分大小写但不区分大小写的文件系统,至少默认情况下是这样。
我不确定为什么存在单个非数字限制;它可能意味着.hpp扩展名不能保证映射到唯一的名称。
这都是对实现的约束;它基本上不会影响您作为程序员(除非您是编写C ++编译器实现的程序员),但您应该确保您的头文件名称不区分大小写并且具有最大的可移植性,您的头文件名称应以.h或其他单字母扩展名结尾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接