c++包含语句和链接

C++ Include Statements and Linking

本文关键字:链接 语句 包含 c++      更新时间:2023-10-16

我总是被告知不要直接包含*.cpp文件。

是良好的编程实践,只有#include *.h文件,而不是*.cpp文件?

是的,你可以认为这是很好的编程实践!

话虽如此,在编程中没有教条。我遇到过一些情况,在这些情况下,包含。h文件之外的其他文件非常有效。

但只有当你有相当多的经验和一个很好的理由偏离时才这样做。

关于使用头文件的原因:

c++是C的继承者。传统上,C和c++没有真正的模块机制,比如Modula或Ada。原则上,多个c++源文件是独立编译的,一旦编译完成,只有链接器才能看到它们。通过将类声明放在头文件中,头文件就变成了一种模块接口。通过在定义类成员的模块M的.cpp文件和使用该模块M的其他模块中包含头文件,创建了一个链接引脚。因此,编译器可以检查M中的声明是否与其他模块中的声明相匹配。

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