[英]What's special about C++ header files with single-letter extensions?
C ++标准在16.2节“源文件包含”中包含以下规则。 它使单字符文件扩展名变得特殊。
该实现应为由一个或多个非 数字或数字 (2.11)后跟一个句点(
.
)和单个非 数字组成的序列提供唯一的映射。 第一个字符不能是数字 。 该实现可以忽略字母大小写的区别。
这些文件名得到什么特殊待遇? 头文件包含上下文中的映射是什么?如果唯一,为何如此重要?
就是说,以回旋的标准方式,即使基础文件系统不支持9.1文件名,头文件(例如"abyssinia.h"
应映射到文件系统中的唯一文件名。 8.3限制的DOS样式,或者Unix的最旧版本,文件名最多包含14个字符。 系统必须确保将这些名称唯一地映射到不同的文件。
它还说该实现可能忽略大小写(这也意味着它可能不会忽略大小写)。 如果忽略大小写,则"ABYSSINIA.H"
和"abyssinia.h"
将映射到同一文件; 如果不忽略大小写,那么它们将是两个单独的文件。 请注意,至少在默认情况下,Windows和Mac OS X都具有保留大小写但不区分大小写的文件系统。
我不确定为什么存在单个非数字限制; 这大概意味着.hpp
扩展名不能保证映射到唯一名称。
这都是对实施的限制; 它通常不会影响您作为程序员(除非您是编写实现的程序员-意味着C ++编译器的实现),除了您可能应该确保头名称是唯一的(无论大小写)并最大程度地实现可移植性,标题名称应以.h
或其他一些单字母扩展名结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.