我有 4 个文件(2 个标题文件和 2 个代码文件)。 文件A.cpp、文件A.h、文件B.cpp、文件B.h
文件A.cpp:
#include "FileA.h"
int main()
{
hello();
return 0;
}
void hello()
{
//code here
}
文件A.h:
#ifndef FILEA_H_
#define FILEA_H_
#include "FileB.h"
void hello();
#endif /* FILEA_H_ */
文件B.cpp:
#include "FileB.h"
void world()
{
//more code;
}
文件B.h:
#ifndef FILEB_H_
#define FILEB_H_
int wat;
void world();
#endif /* FILEB_H_ */
当我尝试编译(使用 eclipse)时,我得到“'multiple definition of `wat'” 而且我不知道为什么,它似乎应该工作得很好。
最佳答案
我不打算包括所有细节,但是您在编译 uint 中定义了一个全局变量 wat
两次。
要修复,请使用以下内容:
FileB.h
extern int wat;
FileB.cpp
int wat = 0;
这个 (extern
) 告诉编译变量 wat
存在于某处,并且它需要自己找到它(在在本例中,它位于 FileB.cpp
)
关于C++变量的多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354857/