因为直接引入.cpp导致的问题

发布时间 2023-03-28 11:36:09作者: 严_青

直接引入*.cpp会引起什么问题?

将.cpp源文件直接包含在另一个源文件中可能会导致一些问题,例如链接错误、重复定义和编译期问题。这是因为包含操作在预处理阶段发生,相当于将被包含文件的所有内容粘贴到包含点。

使用 #include "tst_test.cpp" 可能导致以下问题:

重复定义:如果tst_test.cpp被多次包含(如在其他源文件中也包含),每个实现都会在编译时生成一次,从而导致重复定义错误。头文件通常包含声明,因此不容易导致此类问题,但源文件包含变量和函数的定义,这可能导致重复定义。

链接错误:当你将 .cpp 文件包含在另一个源文件中时,编译单元将无法正确地组织代码。这可能导致链接器找不到某些符号,如虚表,从而产生链接错误。

增加编译时间:将源文件包含在另一个源文件中可能导致编译时间增加,因为编译器需要重新编译所有包含该文件的源文件,即使只对其进行了微小的更改。

总之,从结构和可维护性的角度来看,将类的声明放在头文件中,并在相应的源文件中提供实现是最佳做法。当需要使用该类时,仅需包含头文件。这有助于避免链接错误、重复定义和其他潜在问题,并提高代码的可读性和结构化程度。