C ++中的多个定义,包括标头

时间:2018-06-27 09:59:30

标签: c++

我有一个包含多个文件的项目,如下所示:

//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”,怎么办。 谢谢,

2 个答案:

答案 0 :(得分:1)

通过在variable.hmain.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