C++源文件为什么在windows上扩展名是.cpp,到了linux就是.cc?

发布时间:
2024-08-29 18:42
阅读量:
38

最初 C++ 后缀有两个方案,一个是直接用 c++ ,二个是用大写的 C ,这两者在 Unix/Linux 上都没有问题。

然而这两个扩展名,Windows 的文件系统都不支持!(Windows 不支持加号作为文件名也不支持大小写区分)。

所以才有了 cpp,这个名字大概率是微软倡导出来。当然,cpp 这个扩展名有些问题:一是对非英语国家不友好。因为加号仅仅在 英语国家是 p 开头,在其它很多国家,p 这个字母跟加号没有半毛钱关系。 CPP 还有另外一个问题,它跟现有工具 C pre-processor 重名,C 语言的预处理器名字就叫 CPP,这个重名软件甚至在相同的领域(编程领域)。将源文件命名为 CPP 事实上可能造成相关领域的混淆。例如在 Unix/Linux 体系中,CPPFLAG 实际上代表了预处理器的 flag,而 CXXFLAG 才代表 C++ 编译器的 flag。换句话说 cpp 这个名称在 Unix/Linux 体系下优先指代 C 预处理器而非 C++ 这个语言。

相对的,cc跟cxx这俩后缀也很好,也同样比较流行,尤其是在 Unix/Linux 下可以避免 cpp 这个名称带来的歧义。cc实际上是c再加了一个c,而 x 实际上是旋转之后的 + ,但可能很多人一时间没有意识到这里的 x 实际上表示加号的形状。

cc跟cxx这两后缀基本完美,在大多数场合都不会存在兼容性或者理解性问题,可能唯一的问题就是,cpp作为先发优势已经被微软推广作为最流行的形式。cc跟cxx难以扳回一城。


我的猜测:如果C++一开始就选择了cc或者cxx作为扩展名,那么Windows应该没有必要选择cpp作为扩展名,直接用cc跟cxx都没有问题。但一开始C++选择了大写的 C 跟 c++,可这两个名称 windows 文件系统不支持。等到 cc 跟 cxx 进入提案时,windows阵营已经先发优势使用了 cpp 这个名字,而虽然 unix/linux 阵营并不喜欢 cpp 这个名字,也只能接受其已经被广泛使用的事实了。

END