按照C標準,子條款6.10.2,第5段[ISO/IEC 9899:2011],C源包括名稱長度
執行應提供由一個或多個的序列 獨特映射非數字或數字(6.4.2.1)後跟 (。)和單個非數字。第一個字符不能是 數字。該實施可能會忽略字母順序案例 的區別,並將該映射限制爲在 時間段之前的八個重要字符。
這將意味着如果兩個包含文件具有共同的前8個字符,則它實際選取的標頭是未定義的。
當我使用clang或gcc編譯時,我並沒有真正面對這個問題。但是,在GCC和Clang中是否有源文件包含的記錄行爲?
在現代世界中,如果任何編譯器真的限制爲8個字符,我會覺得很奇怪。
參考:C11 WG14 draft version N1570,Cert C Coding standard
POSIX具有'NAME_MAX'和'PATH_MAX'宏,_gcc_也可以基於這些限制。對於8個字符的限制,也許在嵌入式世界? – md5
關鍵詞是_may_。也許這個問題可以通過使用[8.3文件名](https://en.wikipedia.org/wiki/8.3_filename)格式的舊fat在系統中觸發 – LPs
@ md5即使嵌入式系統可以被限制,通常也會開發固件在現代系統上使用交叉編譯器。 – LPs