我在一个MFC项目中工作,我有一个我的库的头文件和cpp文件,我在不同的文件中包括头文件,但只在“主”文件中包括cpp。 我在头文件中有一个char数组的全局初始化,因为所有文件都需要它。 但是当我编译它时,可以理解的是,它告诉我,我已经初始化了char数组两次。
我曾经尝试使用pragma和头文件中使用的定义技巧
#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE
//Initialization here
#endif
但是链接器仍然给出错误,我们如何解决这个问题?
我在不同的文件中包括头文件,但只在“主”文件中包括cpp
如果这意味着你有
#include "MyFile.cpp" // <- Remove this
int main() { ... }
那么这个文件将包含“myfile.cpp”的所有定义,因此两个编译单元包含相同的定义。
您不应#include
任何。cpp文件。 在头文件中使用include卫士是行不通的,因为两个编译单元都是彼此分离的。 您不能使用宏来控制在另一个编译单元中发生的事情。