问题描述
|
在
C/C++
项目中,大多数文件可以为.h
或.c
/.cpp
类型。除了标题和实现文件之类的命名差异之外;功能上有什么区别吗?
换句话说:如果在正在运行的“ 0”项目中,如果我们更改所有扩展名为“ 2”或“ 3”的文件,会有什么区别?
[注意:我们还可以为8个文件提供7个防护。如果将它们视为标题,则可以跳过它们的编译。]
编辑:
辩论并非旨在解决此问题,因为我没有任何可靠的用例。我想知道,允许给出give1ѭ,.hxx
,.i
扩展名只是一种便利或一条规则。例如我看到的一项功能差异是.cxx
文件可以具有其可爱的目标文件。
解决方法
有什么区别?编译器对此非常满意。对此,它只是文件。
但是对你呢?您会产生很大的变化:
您不再能够立即确定哪个是标头,哪个是实现;
您不能再为标头和实现指定相同的名称;
, 如果您使用的是gcc,并且尝试编译带有.c扩展名的C ++文件,它将尝试编译您的文件,就像它是C语言文件一样,它将创建大量的错误。
项目也是如此,这就是为什么很多时候您会看到项目实际上将C ++标头标记为.hpp而不是.h的原因,因此更容易在C语言之间进行区分源代码和标头,以及C ++源代码和标头。
, 头文件通常不得直接编译,而应#include包含在直接编译的文件中。通过为这两类文件提供自己的扩展名,可以轻松确定要编译的文件。
Make和IDE以及其他工具通常期望源代码使用.c / .cpp约定,而标头使用h / hpp约定。编译器通常会更进一步,对于.c和.cpp,默认为C编译。
因此,给您的标头提供与源文件相同的扩展名是一个坏主意。