您的位置:首页 > 编程语言 > C语言/C++

C++中如何避免头文件包含问题

2020-06-22 04:27 579 查看

C++中如何避免头文件包含问题

假设有一个名为“Head.h”的文件:

#include"Circle.h"

再有一个名为“TestHead.cpp”的文件:

#include"Circle.h"#include"Head.h"

这个时候如果编译TestHead.cpp就会出现一个编译错误,指出Circle类有多个定义。这是因为,在C++中,预处理器是把头文件的内容插入它们包含的位置。Circle.h在上面第一行中被包含。由于Circle类的头文件也包含在Head.h中,而TestHead.cpp包含了Head.h,预处理器将再一次添加Circle类的定义,这会造成多次包含的错误。
在C++中,原语

#ifndef
#define
可以用来避免头文件被多次包含。
例子:

#ifndef CIRCLE_H
#define CIRCLE_H

class Circle
{
public:
Circle();
Circle(double);
~Circle(); // Destructor
double getArea() const;
double getRadius() const;
void setRadius(double);

private:
double radius;
};

#endif

由#开始的语句是预处理原语,它们由C++预处理器解释。#ifndef表示“如果没有定义”。第一行测试CIRCLE_H是否已经定义,如果没有,在第二行中用#define去定义该符号并且头文件的其他部分被包含进来;否则,头文件一下的部分将被忽略。#endif用于指出头文件结束。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: