我有一个包含多个文件的项目,如下所示:
//header.h
class example {...}
//variable.h
#include "header.h"
example ex;
//main.cpp
#include "variable.h"
....
//src1.cpp
#include "variable.h"
当编译器错误编译为:“ ex”的多个定义时 我不明白为什么,我要在main.cpp和src1.cpp中使用“ ex”,怎么办。 谢谢,
答案 0 :(得分:1)
通过在variable.h
和main.cpp
中同时包含src1.cpp
,您已经两次定义了变量ex
。 链接器(不是编译器)会不会这样。
相反,将variable.h
更改如下:
extern example ex;
并放置:
example ex;
(例如,src1.cpp
中的。
是的,也可以使用include防护,但这不是问题所在。
答案 1 :(得分:0)
在header.h和variable.h中使用包含防护:
#ifndef HEADER_H
#define HEADER_H
class header {...}
#endif