Chinaunix首页 | 论坛 | 博客
  • 博客访问: 700131
  • 博文数量: 126
  • 博客积分: 2944
  • 博客等级: 上校
  • 技术积分: 1160
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-17 11:09
个人简介

文章分类

全部博文(126)

文章存档

2022年(1)

2018年(1)

2017年(5)

2016年(5)

2013年(5)

2012年(21)

2011年(24)

2010年(1)

2009年(2)

2008年(12)

2007年(6)

2006年(19)

2005年(24)

分类: C/C++

2018-04-09 11:40:01



c源程序 m.c 包含两个头文件 1.h 和 2.h
1.h 包含 2.h; 2.h 包含 1.h

编译结果如下,出现未定义类型 t1,实际上 t1 在 1.h 中被定义。


原因在于:
  1.  m.c 首先解析 1.h;
  2.  1.h 定义宏 H1_H,接着包含头文件 2.h,注意此时还没有走到第8句定义 t1;
  3.  2.h 定义宏 H2_H,接着包含头文件 1.h,因为已经定义宏 H1_H,故此时忽略头文件 1.h;
  4.  走到第6行时,发现 t1 未定义。

若交换 m.c 的2、3句,先包含 2.h, 再包含 1.h,则出现 t2 未定义:

阅读(2319) | 评论(0) | 转发(0) |
0

上一篇:高效 python (3)

下一篇:一些软件推荐

给主人留下些什么吧!~~