c++ - 包含 .h 文件和 c/cpp 文件有什么区别?

标签 c++

<分区>

大家都指出了“一个定义规则”。我不打算在 c/cpp 文件中定义我的任何东西,而是将它们仅用于声明。

一个cpp文件:

int add(int x, int y);

另一个cpp文件:

#include<one.cpp>
int add(int x, int y)
{
    return x + y;
}

另一个cpp文件:

#include<one.cpp>
int main()
{
    int result = add(2,2);
}

基本上是一样的,但我使用的不是.h,而是.cpp。区别? 一个定义规则在这里不适用。 是的,最后一个问题,为什么每个人都说使用 header 和这种技术可以减少编译时间?这究竟是如何工作的?

最佳答案

编译器不关心文件扩展名,因此对编译器来说没有区别。这里重要的是,声明(做什么)进入 .h 文件以及定义和实现(做什么)进入 .cpp 文件是一个众所周知且被接受的约定。如果你不遵循这个约定,你会混淆其他读者,如果你打算从事更大的项目,这是一个大问题。然后你将成为那个没人愿意再在项目上合作的人,因为你混淆了其他项目成员,然后你将失去工作,因为你不能只遵循那个该死的约定。


And yes, last question, why is everyone says that using headers and this technique reduces compile time? How exactly does that work?

我认为您指的是预编译头文件,在这种情况下 this question有一些很好的答案。

关于c++ - 包含 .h 文件和 c/cpp 文件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037533/

相关文章:

c++ - 为什么我收到此错误 "access violation writing location"?

C++ cout 指针

C++ 导入和使用 ADO

python - OpenCV 3 在 37% 时构建问题?

c++ - 成员函数的部分模板特化 : "prototype does not match"

c++ - C:分析 .obj 文件的实用程序,以精确字节测量某些函数的大小?

c++ - 深度删除 C++ 对象

c++ - 具有从命名空间继承的类的 Eclipse 相对缩进

c++ - 如何在迭代时从 std::set 中删除元素

python - 将数据从 c++ 程序传递到 linux 上的 python 程序