Ida*_*n K 12 c++ linux windows gcc visual-studio
鉴于此目录树:
src/MyLibrary/MyHeader.h
src/file.cpp
file.cpp:
#include "mylibrary/myheader.h"
...
Run Code Online (Sandbox Code Playgroud)
编译file.cpp与VS一起使用,在gcc中失败.
谢谢.
Dan*_*llo 24
区分大小写取决于操作系统.Windows不区分大小写.Linux是.
编辑:
实际上,正如Martin York的评论所观察到的,区分大小写取决于文件系统.默认情况下,Windows使用不区分大小写的文件系统,而Linux使用区分大小写的文件系统.对于有兴趣知道哪些文件系统区分大小写但哪些不区分大小的人,维基百科上有一个全面的列表:文件名限制的比较.
标准怎么说?
指令中的大小写敏感性#include由实现(编译器/预处理器)控制。这在 16.2.2 [cpp.include] 中有解释:
该形式的预处理指令
# include < h-char-sequence> new-line
在一系列实现定义的位置中搜索由<和>分隔符之间的指定序列唯一标识的标头,并导致用标头的整个内容替换该指令。如何指定位置或标识标头是实现定义的。
同样,16.2.3 [cpp.include]:
该形式的预处理指令
# include " q-char-sequence" new-line
会导致将该指令替换为由"分隔符之间的指定序列标识的源文件的全部内容。以实现定义的方式搜索指定的源文件。如果不支持此搜索,或者搜索失败,则会重新处理该指令,就像从原始指令中读取
# include < h-char-sequence> new-line
相同的包含序列(包括字符,如果有)一样。>
该语言实现的自然选择是使用文件系统或操作系统的区分大小写,但没有严格要求这样做(正如所有其他答案所暗示的那样)。
最佳实践是什么,将所有文件/文件夹名称保持小写,从而在包含时执行相同的操作?
一如既往的最佳实践:保持一致。如果您在项目中使用混合大小写的源文件/头文件,请继续使用它们并在#include指令中复制精确的大小写。
| 归档时间: |
|
| 查看次数: |
11117 次 |
| 最近记录: |