社区
C++ 语言
帖子详情
什么是编译单元
elephone
2007-02-11 10:30:10
什么是编译单元
(当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。)
上面解释的看不懂
希望高手给我通俗的解释一下
...全文
1412
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反
编译
工具
超猛的可以反
编译
Delphi、C++ bulider程序的源代码-bets can decompile the Delphi, C bulider program's source code!
DeDe V3.50.02 (DELPHI反
编译
工具)
DeDe,著名的DELPHI反
编译
工具,3.5版本,多语种(含中文)界面,支持到D7版本,反
编译
结果虽然是汇编级,不过效果已经非常不错了。代码连接为DeDe3.10的源代码(D6
编译
的)
简单的扑克牌游戏程序
一个简单的扑克牌游戏程序.
C语言基础:
编译
的基本
单元
是什么?
大家都知道一个C语言写的程序,需要进行 预
编译
->
编译
->汇编->链接,四个步骤才能生成可执行文件。 今天我们挖掘一下,
编译
是以什么为单位进行的。 所谓的
编译
单位,就是说我们在代码里写的#开头的指令的作用范围是多大,比如我们在写.h文件的时候,会在开头写上如下的内容: #ifndef XXXX #define XXXX …头文件内容… #endif 这些内容是为了防止重复包含,导致的重复定义错误。 那么#define XXXX,一句的作用范围是多大呢。 是不是在工程的一个.c文件定义了这个
$unit
编译
单元
声明
$unit
编译
单元
声明 SystemVerilog含有
编译
单元
。 相比Verilog,SystemVerilog增加了
编译
单元
的概念。
编译
单元
是同时
编译
的所有源文件。
编译
单元
为软件工具提供了一种对整个设计子块单独
编译
的方法。一个子块可能包含第一个或多个模块(module)。这下模块可能包含在一个或多个文件中。设计的子块可能还包含接口块和测试程序块。
编译
单元
域包含外部声明。 SystemVerilog允许在包、模块、接口和程序块的外部进行声明扩展Verilog的声明域。这些外部声明在“
编译
单元
域”中,并且对
C++ 语言
65,183
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章