社区
C++ 语言
帖子详情
什么是编译单元
elephone
2007-02-11 10:30:10
什么是编译单元
(当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。)
上面解释的看不懂
希望高手给我通俗的解释一下
...全文
1449
10
打赏
收藏
什么是编译单元
什么是编译单元 (当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。) 上面解释的看不懂 希望高手给我通俗的解释一下
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shenshaobo_0
2009-10-07
打赏
举报
回复
一直在不明不白种。。。受教了
songdm2009
2009-10-07
打赏
举报
回复
学习了
Aeris
2009-10-07
打赏
举报
回复
注意是经过预处理后的cpp文件。经过这样处理后,所有的预处理标记(#include、#define等)全都不见了,换成了“实在”的代码。
简单的理解:头文件包含进来,所有的宏全部展开。
OOPhaisky
2007-02-11
打赏
举报
回复
编译单元,你就可以把它理解为:#include完头文件的内容后(即将头文件的内容粘贴到cpp中之后)的cpp文件就是编译单元。
lizhizhe2000
2007-02-11
打赏
举报
回复
意思是一个编译单元就是一个积木块(就是一个.obj文件),然后连接程序再把这些积木堆起来!
晨星
2007-02-11
打赏
举报
回复
书上说的还不明白吧?我觉得很难更清楚了。
编译单元,顾名思义,就是一次编译的单位,C/C++语言中编译器都是以被做了include递归展开的cpp文件为编译单位,这也就是最小的编译单位了。
换句话说,你可以让编译器编译一个cpp源文件,而编译器会自动处理它所包含的内容,最终把它所包含的内容以及它自身的内容编译成一个目标文件。你无法让编译器只编译某个cpp文件中的某一个具体的变量或函数。
之所以书上常说“编译单元”,而不说“cpp文件”,就是因为前者表意更准确。如果直接说“C++编译器每次把一个个的cpp文件的内容编译成目标文件”,那人家就会抬杠:啥?只编译cpp文件的内容?那被它所包含的头文件的内容就不管了吗?
所以,C++编译器每次编译的可能仅仅是一个文件,也可能是通过包含关系关联在一起的多个文件,不管是最终是几个文件,总之,这个概念就叫“一个编译单元”。
htqx
2007-02-11
打赏
举报
回复
一个cpp 就是一个编译单元, 会编译成obj.
所谓的static , extern 就是相对编译单元来说的,个个编译单元共享是extern,独立是static
WinWing
2007-02-11
打赏
举报
回复
看过编译原理没有?2楼正解
-----------------------------------------------------------------------------------
编译单元,你就可以把它理解为:#include完头文件的内容后(即将头文件的内容粘贴到cpp中之后)的cpp文件就是编译单元。
tiancaiak
2007-02-11
打赏
举报
回复
编译单元
-----------
经过预处理之后的文件(这个是内存中的临时文件)
#include在预处理时被展开,宏也一样
一个经过展开后的.cpp文件就是一个编译单元
一个xx.h(经过预处理) + 一个xx.cpp = 一个编译单元
一个编译单元(经过编译)= xx.obj
整个程序的多个.obj加起来(经过链接) = .exe(可执行文件)
预处理
-----------
把一些带#号的,比方说宏定义,预处理命令(#include)等
duyanning
2007-02-11
打赏
举报
回复
意思是一个编译单元就是一个积木块(就是一个.obj文件),然后连接程序再把这些积木堆起来!
===============================================
这个不对!
楼上正解。
简单说,一个编译单元就是一个经过预处理的cpp文件。
Delphi反
编译
工具
例如,`LodoUnit.dfm`、`MainUnit.dfm`、`ASMShow.dfm`等可能是项目的各个窗体
单元
,每个
单元
包含了与对应窗体相关的控件和事件处理代码。`ClassInfoUnit.dfm`可能表示一个包含类信息的窗体,`PreferencesUnit.dfm`...
DeDe V3.50.02 (DELPHI反
编译
工具)
这个版本包含了多个配置和
单元
文件,如DeDe.cfg、LodoUnit.dfm、MainUnit.dfm等,这些文件在DEDE的运行中扮演着关键角色。例如,.dfm文件是DELPHI中的形式文件,它们存储了窗体的布局、组件状态等信息,对于理解和...
简单的扑克牌游戏程序
DCU文件包含了
编译
后的代码
单元
,便于在项目中引用和复用。UNIT1.DCU很可能包含了游戏的基本逻辑和功能模块。 2. **UNIT2.DCU** 和 **UNIT3.DCU**: 类似于UNIT1.DCU,这两个文件可能分别代表游戏的不同部分或子模块...
C语言基础:
编译
的基本
单元
是什么?
今天我们挖掘一下,
编译
是以什么为单位进行的。 所谓的
编译
单位,就是说我们在代码里写的#开头的指令的作用范围是多大,比如我们在写.h文件的时候,会在开头写上如下的内容: #ifndef XXXX #define XXXX …头文件...
$unit
编译
单元
声明
$unit
编译
单元
声明 SystemVerilog含有
编译
单元
。 相比Verilog,SystemVerilog增加了
编译
单元
的概念。
编译
单元
是同时
编译
的所有源文件。
编译
单元
为软件工具提供了一种对整个设计子块单独
编译
的方法。一个子块可能包含...
C++ 语言
65,202
社区成员
250,523
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章