标题与标准标题具有相同名称但大小写不同的问题

Posted

技术标签:

【中文标题】标题与标准标题具有相同名称但大小写不同的问题【英文标题】:Problems with header having the same name, but different case, as a standard header 【发布时间】:2019-11-06 18:08:13 【问题描述】:

我在一个文件夹 (src) 中有一个名为 Time.h 的文件,该文件包含在其他包含目录/编译器包含路径中。包括 "Time.h" 很好,但是当包括 时,Visual Studio 似乎会感到困惑,并且在 VS 停止从文件系统到 chrono 的所有文件中编译之前,我会遇到多达 100 个错误,说某些标准宏未定义。关于歧义没有错误。这是因为 Windows 不区分大小写吗?那样的话,除了制作一个专用目录Time/Time.h之外,如何避免呢?

【问题讨论】:

这是由 Windows 操作系统强加的限制,而不是 C++ 语言。文件系统在命名文件时保留大小写,但将文件查找视为不区分大小写。 ***.com/questions/7199039/… 此外,您可以将文件系统更改为区分大小写(但有可能破坏仍在使用旧代码的某些应用程序):howtogeek.com/354220/… 我在一个文件夹 (src) 中有一个名为 Time.h 的文件 -- 吸取的教训是,您不应将头文件命名为与标准文件相同的名称。 为避免名称冲突,请保持您的名称与图书馆的名称不同。 @jxh 这是每个目录 【参考方案1】:

这是因为 Windows 不区分大小写吗?

Yes.

这样的话,除了制作一个专门的目录Time/Time.h之外,如何避免呢?

不能,除非使用目录,或为文件选择不同的名称。

嗯,技术上,you can make NTFS directories case sensitive。但是,这似乎是一个脆弱且不可移植的解决方案,我不能保证 Visual Studio 本身会尊重它。

【讨论】:

如果您在 Windows 主机上运行虚拟机并使用虚拟机的文件共享机制,即使在 Unix 上,这也会让您意外地进入。 @jxh:非常真实!

以上是关于标题与标准标题具有相同名称但大小写不同的问题的主要内容,如果未能解决你的问题,请参考以下文章

唯一标识名称和大小相同但内容不同的文件

检查列表是不是包含具有不同大小写的相同字符串

具有相同颜色(不透明度)和不同字体大小的两个文本块出现不同

CSS 2 div大小自动相同高度

在 Leaflet 中创建具有不同圆圈大小的图例

C++ 多个具有相同名称的类