C ++包含语句和链接

时间:2015-07-11 15:38:22

标签: c++

我一直被告知永远不要直接包含*.cpp文件。

#include *.h个文件而不是*.cpp个文件是否是良好的编程习惯?

2 个答案:

答案 0 :(得分:2)

是的,您可以考虑一下良好的编程习惯!

话虽如此,编程中没有教条。 我遇到过一些情况,其中包含其他内容然后是.h文件非常有效。

但只有这样,如果你有相当多的经验并且有很好的理由偏离。

关于使用头文件的原因:

C ++是C的继承者。传统上,C和C ++没有真正的模块机制,例如Modula或Ada。原则上,多个C ​​++源文件是独立编译的,只有链接器在编译后才能看到它们。通过举例来说在头部的类声明中,头部成为一种模块接口。通过在模块M的.cpp文件中包含头部,其中定义了类成员,并且在使用该模块M的其他模块中,创建了链接引脚。因此,编译器可以检查M中的声明是否与其他模块中的使用匹配。这样可以进行跨模块类型检查。

答案 1 :(得分:0)

我还补充说,最重要的事实是,在c ++中我们必须区分定义和声明。如果编译器两个相同的定义(函数或变量定义),则抛出错误并结束编译。如果我们想在许多独立编译的翻译单元中使用相同的函数,那么你需要声明这个函数。因此我们将声明放在.hpp中,这些文件可以是其他文件的#include。在.cpp中放置定义(这意味着编译器分配内存)。让我们考虑不能放在.hpp文件中的全局变量或静态变量,因为如果编译器在同一名称空间中遇到两个相同的定义,则退出编译。