完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
编译原理的理解
1.预处理 这个阶段预处理器将按照预处理命令进行宏展开,其中,头文件例如 Stm32f10x.h 中的内容将会被完全替换到包含这个头文件的源文件。 2.编译 编译器对各个源文件中的代码进行语法分析,并将代码语言翻译成汇编语言,再将汇编语言翻译成机器语言(有些编译过程直接将代码翻译成机器语言),生成多个 相互独立 的目标文件(.o文件),此时这个文件已很接近很执行文件了(二进制文件)。代码中会使用到函数或全局变量,当编译这段代码时,若函数或全局变量已经声明(不考虑是否已经被定义),则在此处产生一个序列号与函数进行唯一对应。 而函数的定义处也会产生一个序列号,与函数使用处对应 3.链接生成可执行文件 在对整个程序进行检查,将函数定义的目标代码(二进制代码)按照序列号插入替换到函数声明的那段代码中,最终生成可执行文件。 几个问题
test.h 中 int var1; int var2; void Func1; main.c 中 #include "test.h" `` `` #include "test.h" int main() { } 预处理之后 main.c中将会出现 int var1; int var2; void Func1; int var1; int var2; void Func1; 宏定义和函数声明的位置合适,语法正确,整个编译过程可以不需要.h文件,but why not?
|
|
|
|
只有小组成员才能发言,加入小组>>
2420 浏览 0 评论
968浏览 2评论
594浏览 1评论
357浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 21:12 , Processed in 1.347027 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号