[英]C++ Header & Source Files - What To Include And In Which Order
我刚开始学习 C++ 并且无法理解头文件和源文件的概念,特别是我应该在哪里包含哪些文件。
假设我有 A 类和 B 类,每个类的内容都分为头文件和源文件,并且我有一个要在其中使用这些类的文件。
├ A.h
├ A.cpp
├ B.h
├ B.cpp
└ Main.cpp
我需要在哪里包含哪个文件,是否可以使用单个命令编译/链接所有文件?
我需要在哪里包含哪个文件
#include
指令实际上是一个非常简单的预处理指令,它只是将指定文件的内容添加到目标文件中。 通常,您将函数声明保留在头文件中,并将所述函数的定义保留在相应的cpp
文件中,因此您至少希望将头包含在其中(在您的情况下, A.cpp
包括Ah
和B.cpp
包括Bh
) . 此外,您在使用标头中声明的函数的任何文件中包含标头(例如,如果您在Main.cpp
中使用Ah
和Bh
的声明,您也包括这些文件)。
PS 但是,您可以在头文件中的声明旁边定义所有内容,但是正如我之前所说的,预处理器并没有做任何花哨的事情-它只是将包含的内容添加到目标文件中,而您通常不会希望所有定义都到位,因为包含它的每个翻译单元都会一遍又一遍地重复相同的定义。
你包括你需要的东西。
如果A.cpp
需要Ah
那么它应该包含它。 B.cpp
同样可能需要包含Bh
。
如果Main.cpp
使用A
和B
那么它应该包括Ah
和Bh
。
Main.cpp
不应依赖于间接包含。 例如Ah
确实包含Bh
然后Main.cpp
同时使用A
和B
仍应包含Ah
和Bh
,即使如果Main.cpp
仅直接包含Ah
(并且由此也间接包含Bh
)代码将编译。
按哪个顺序?
如果您遵循始终包含您使用的内容的规则(而不是依赖间接包含标头或依赖于之前包含的其他标头),那么#include
指令的顺序应该无关紧要。 更改包含的顺序会破坏构建提示,其中包含应修复的标题之一中的包含问题。 如果你做对了,那么包含的顺序只是风格问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.