社区
C++ 语言
帖子详情
什么是编译单元
elephone
2007-02-11 10:30:10
什么是编译单元
(当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。)
上面解释的看不懂
希望高手给我通俗的解释一下
...全文
1491
10
打赏
收藏
什么是编译单元
什么是编译单元 (当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。) 上面解释的看不懂 希望高手给我通俗的解释一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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文件。
$unit
编译
单元
声明
本文详细介绍了SystemVerilog中的
编译
单元
概念及其在软件工具中的应用。
编译
单元
可以包含多种声明,并且这些声明对同时
编译
的所有模块可见。文章还探讨了如何在
编译
单元
域中进行有效声明,以及包的导入方法。
SV中$unit
编译
单元
本文介绍了SystemVerilog中的
编译
单元
($unit)概念,解析了
编译
单元
域的搜索规则,并通过实例展示了函数查找的优先级。同时,讲解了使用`ifndef`和`define`进行条件
编译
,以避免重复导入包,确保代码正确性。内容涉及SystemVerilog的包导入、模块定义以及仿真过程。
编译
单元
必须以 java_java中什么是
编译
单元
本文介绍了Java中的
编译
单元
,指出.java结尾的文件为
编译
单元
,其中可有一个public类且类名与文件名相同,也可无public类但有同名类,还可有额外类。
编译
时每个类会生成.class文件,Java可运行程序由.class文件打包成JAR文件。此外,还阐述了Java解释器的运行过程。
java基础知识2-
编译
单元
本文介绍了Java
编译
单元
的概念,.java文件如何
编译
成多个.class文件,并探讨了包的作用及命名规则。同时,文章还讲解了不同情况下类文件的访问权限及自动
编译
机制。
编译
单元
本文解释了在C/C++编程中,一个源文件如何通过预处理阶段形成
编译
单元
,并进一步
编译
为目标文件的过程。此外,还介绍了链接程序如何将不同的目标文件组合成可执行程序。
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章