Chinaunix首页 | 论坛 | 博客
  • 博客访问: 328243
  • 博文数量: 57
  • 博客积分: 146
  • 博客等级: 入伍新兵
  • 技术积分: 769
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-29 14:57
文章分类
文章存档

2014年(39)

2013年(13)

2012年(5)

我的朋友

分类: C/C++

2014-06-16 14:08:56

在C中,translation unit(翻译单元)也可称为compilation unit(编译单元),translation unit是C预处理后的输出,即一个源文件经过预处理后。经过translation unit后产生一个目标文件(比如.c通过编译产生.o文件)。

预处理包括:
1.扩张的源文件以递归方式用指令中申明的字面文件取代所有#include指令(通常是头文件,但可能还有其他源文件)这一步骤的结果是一个预处理翻译单元。
2.包括#define指令和#ifdef宏扩展,这将预处理翻译单元为翻译单位。从翻译单位,编译器产生一个目标文件,可进一步加工和链接(可能与其他目标文件)来形成一个可执行程序。

翻译单位的范围是文件范围。在C术语中,它是一个内部连接(C中两种连接格式外部链接和内部连接)。
在函数块外部名字声明(函数和变量)若只能在一个已知的translation unit是可见的,称为内部链接。他们对于linker(连接器)是不可见。若声明的函数或变量对于其他的目标文件是看见的,则称为具有外部连接,对于linker是可见的。




阅读(5354) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~