问题描述
我有4个文件(2个标题和2个代码文件)。
FileA.cpp,FileA.h,FileB.cpp,FileB.h
FileA.cpp:
#includeFileA.h
int main()
{
hello
return 0;
}
void hello()
{
// code here
}
FileA.h:
#ifndef FILEA_H_
# define FILEA_H_
#includeFileB.h
void hello();
#endif / * FILEA_H_ * /
FileB.cpp:
#includeFileB.h
void world()
{
//更多代码
}
FileB.h:
#ifndef FILEB_H_
#define FILEB_H_
int wat;
void world();
#endif / * FILEB_H_ * /
尝试编译(使用eclipse),我得到wat'的多重定义
我不知道为什么,它似乎应该工作很好。
我不会包括所有的细节,但你定义一个全局变量, wat
FileB.h 要修复,
extern int wat;
FileB.cpp
int wat = 0;
这个( extern
)告诉编译变量 wat
存在于某处 ,并且它需要找到它自己的(在这种情况下,它在 FileB .cpp
)
I have 4 files (2 headers, and 2 code files).FileA.cpp, FileA.h, FileB.cpp, FileB.h
FileA.cpp:
#include "FileA.h"
int main()
{
hello();
return 0;
}
void hello()
{
//code here
}
FileA.h:
#ifndef FILEA_H_
#define FILEA_H_
#include "FileB.h"
void hello();
#endif /* FILEA_H_ */
FileB.cpp:
#include "FileB.h"
void world()
{
//more code;
}
FileB.h:
#ifndef FILEB_H_
#define FILEB_H_
int wat;
void world();
#endif /* FILEB_H_ */
when I try to compile(with eclipse), I get " multiple definition of `wat' "And I don't know why, it seems as it should work just fine.
I'm not going to include all of the details, but you define a global variable, wat
twice in your compilation uint.
To fix, use the following:
FileB.h
extern int wat;
FileB.cpp
int wat = 0;
This (extern
) tells the compile that the variable wat
exists somewhere, and that it needs to find it on it's own (in this case, it's in FileB.cpp
)
这篇关于c ++变量的多个定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!