关于相互包含的头文件
来源:互联网 发布:闪图制作软件 编辑:程序博客网 时间:2024/04/29 12:43
一直以来,我都为两个相互包含的头文件的问题迷惑着。
Link.h
#include "Node.h"
class Link
{
private:
Node* m_node;
};
Node.h
#include "Link.h"
class Node
{
private:
Link* m_link;
};
两个文件的#include语句都放在#ifndef的宏里面。
这样编译的话,VC会告诉你不认识其中的一个类(后编译的那个)。只有在class Node 的前面加上class Link;
才能够编译成功。
一直在想,为什么会这样?这就牵扯到一个问题,VC这个编译器到底是怎样编译程序的?
我认为:VC在编译每个头文件的时候,都会展开该头文件包含的其他头文件,并且和同名的.cpp进行编译。这个
过程是个独立的过程。但是在相互包含的头文件被展开后,重复定义的头文件将不会被插入到整个编译文件.OBJ文件中去。
- 关于相互包含的头文件
- 关于头文件的相互包含
- 头文件相互包含
- C头文件相互包含的问题
- 头文件相互包含的解决
- 头文件相互包含的问题
- 头文件相互包含的问题
- 两个头文件相互包含的问题
- 头文件相互包含导致的错误
- C++头文件相互包含的问题
- 头文件相互包含的问题
- 两个头文件相互包含的问题
- C++ 头文件相互包含的问题
- 头文件相互包含的问题解决之
- 头文件的相互包含(续)
- 关于头包含头文件的问题
- c++头文件相互包含
- c++头文件相互包含
- Ping程序在TCP/IP中的应用
- 值得珍藏一辈子的80句话(经典语句)
- 人生成功生涯规划100诀
- linux常用命令全集
- [数据库测试]强烈推荐一个python ODBC数据源插件,可支持Oracle,Db2,Mysql,Sql-server以及各种数据库版本,附例子和测试程序
- 关于相互包含的头文件
- jQuery - 参考资料 - Filter Property (Tabular Data Control): - Filter属性(表格数据控件)
- 贡献自己以前在网上搜索和总结的两个通用的数据库公用操作类
- C#设计模式-Builder生成器模式
- 基本上潜心工作了一天
- DataBinder.Eval 显示YYYY-MM-DD的日期型格式
- 15个顶级技术博客网址共享
- kerberos 1.13 by Рустем Фасихов
- 扩展ROM(OPROM)