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用于指出头文件结束。
相关文章推荐
- 在c/c++中如何避免头文件被多次包含?
- 如何解决c++中循环包含头文件的问题
- 如何解决c++中循环包含头文件的问题
- 如何解决c++中循环包含头文件的问题
- C++中头文件相互包含的几点问题
- [转载]C++中头文件相互包含的几点问题 http://waret.javaeye.com/blog/729349
- C++头文件的重定义问题以及头文件互相包含问题
- C++中头文件包含问题
- C++中头文件相互包含的几点问题
- C/C++ 中头文件相互包含引发的问题
- C/C++中头文件多次包含的问题
- C++头文件包含顺序问题
- 跳过登陆页面直接访问该jsp文件了,这样不好,请问大家如何避免这种问题?
- c++编译包含头文件问题
- (转)iOS并发编程笔记,包含GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,并发测试的方案等
- 解决C/C++ 头文件相互包含 问题的方法
- C/C++ 中头文件相互包含引发的问题
- c++:头文件包含问题
- C/C++ 中头文件相互包含引发的问题
- C++中头文件互相包含问题