社区
C++ 语言
帖子详情
什么是编译单元
elephone
2007-02-11 10:30:10
什么是编译单元
(当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。)
上面解释的看不懂
希望高手给我通俗的解释一下
...全文
1155
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文件。
C语言基础:
编译
的基本
单元
是什么?
大家都知道一个C语言写的程序,需要进行 预
编译
->
编译
->汇编->链接,四个步骤才能生成可执行文件。 今天我们挖掘一下,
编译
是以什么为单位进行的。 所谓的
编译
单位,就是说我们在代码里写的#开头的指令的作用范围是多大,比如我们在写.h文件的时候,会在开头写上如下的内容: #ifndef XXXX #define XXXX …头文件内容… #endif 这些内容是为了防止重复包含,导致的重复定义错误。 那么#define XXXX,一句的作用范围是多大呢。 是不是在工程的一个.c文件定义了这个
$unit
编译
单元
声明
$unit
编译
单元
声明 SystemVerilog含有
编译
单元
。 相比Verilog,SystemVerilog增加了
编译
单元
的概念。
编译
单元
是同时
编译
的所有源文件。
编译
单元
为软件工具提供了一种对整个设计子块单独
编译
的方法。一个子块可能包含第一个或多个模块(module)。这下模块可能包含在一个或多个文件中。设计的子块可能还包含接口块和测试程序块。
编译
单元
域包含外部声明。 SystemVerilog允许在包、模块、接口和程序块的外部进行声明扩展Verilog的声明域。这些外部声明在“
编译
单元
域”中,并且对
java基础知识2-
编译
单元
1:java
编译
单元
.java文件是一个
编译
单元
,每个
编译
单元
顶多只有一个public标记的类,被public标记的类名字必须和文件的名字相同(包含大小写形式,但排除文件扩展名.java)当然一个.java文件可以包含许多其它类,但是其它类都是为这个public类起支撑作用的,他们都不能是public的。当.java文件中没有public标记的类时,这个类不能被外部访问,也就没意义了。 2:
编译
单元
当一个c或cpp文件在
编译
时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个
编译
单元
。这个
编译
单元
会被
编译
成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同
编译
单元
中产生的符号联系起来,构成一个可执行程序。 可以把它理解为:#include完头文件的内容后(即将头文件的内容粘贴到cpp中之后)的cpp文件就是
编译
单元
。简单说,一个编
java
编译
单元
1. 当编写一个java原文件时,此文件被称为
编译
单元
。每个
编译
单元
都必须有一个后缀名.java,而
编译
单元
内可以有一个public类,该类的名字必须和文件名称相同;每个
编译
单元
只能有一个public类,否则
编译
器会报错。如果比那一
单元
中还有其他额外的类,那么包外的世界是我无法看见这些类的,这号是因为他们不是public类。 2. 当
编译
一个.java文件时,在.ja...
C++ 语言
64,661
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章