C++標準在第16.2節「源文件包含」中包含以下規則。它以某種方式使單字符文件擴展特殊。帶單字母擴展名的C++頭文件有什麼特別之處?
執行應用於由一個或多個非數字或數字(2.11),接着是週期(
.
)和單個非數字序列提供唯一的映射。第一個字符不得是數字。實施可能會忽略字母區分的區別。
這些文件名得到什麼特殊待遇?什麼是頭文件包含的上下文映射,以及爲什麼它是唯一的問題?
C++標準在第16.2節「源文件包含」中包含以下規則。它以某種方式使單字符文件擴展特殊。帶單字母擴展名的C++頭文件有什麼特別之處?
執行應用於由一個或多個非數字或數字(2.11),接着是週期(
.
)和單個非數字序列提供唯一的映射。第一個字符不得是數字。實施可能會忽略字母區分的區別。
這些文件名得到什麼特殊待遇?什麼是頭文件包含的上下文映射,以及爲什麼它是唯一的問題?
這就是說,以迂迴的標準方式,即使底層文件系統不支持9.1文件名,像"abyssinia.h"
這樣的頭文件也應映射到文件系統中的唯一文件名 - 考慮舊的具有8.3限制的DOS風格的DOS,或者Unix的最老版本,最多有14個字符作爲文件名。系統必須確保這些名稱唯一映射到不同的文件。
它也說實現可能會忽略大小寫(這也意味着它可能不會忽略大小寫)。如果確實忽略大小寫,則"ABYSSINIA.H"
和"abyssinia.h"
將映射到相同的文件;如果它不忽略大小寫,那麼它們將是兩個單獨的文件。請注意,Windows和Mac OS X都具有保留大小寫但不區分大小寫的文件系統,至少默認情況下是這樣。
我不確定爲什麼存在單個非數字限制;這大概意味着.hpp
擴展名不能保證映射到唯一名稱。
這是所有對實現的約束;它大多不會影響你作爲一個程序員(除非你是編寫實現的程序員 - 意味着C++編譯器的實現),除了你應該確保你的頭名稱是唯一的而不管大小寫和最大可移植性,您的標題名稱應該以.h
或其他單個字母的擴展名結尾。