- 1、本文档共107页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux应用开发教程第三章 嵌入式LinuxC基础新
嵌入式应用程序设计第三章 嵌入式Linux C基本 3.1 预处理 3.2 C语言中的内存分配 3.3 程序的可移植性考虑 3.4 C和汇编的接口 3.5 ARM Linux内核常见数据结构 3.6 小结 3.7 思考与练习 3.1 预处理 3.1.1 预定义 3.1.2 文件包含 3.1.3 条件编译 3.1.1 预定义 在C语言源程序中允许用一个标识符来表示一串符号,称为宏,被定义为宏的标识符称为宏名。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的符号串去替换,这称为宏替换或宏展开。 预定义符号 宏定义 预定义符号 有一些预处理定义的符号串,它们的值或者是字符串常量,或者是十进制数字常量,它们通常在调试程序时用于输出源程序的各项信息 。 宏定义 宏定义是由源程序中的宏定义#define语句完成的;而宏替换是由预处理程序自动完成的。 (1)无参宏定义 无参宏的宏名(也就是标识符)后不带参数,其定义的一般形式为: #define 标识符 字符串 (2)带参宏定义 对带参数的宏,在调用中不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为: #define 宏名(形参表) 字符串 宏定义 3.1.2 文件包含 文件包含是C语言预处理程序的另一个重要功能,文件包含命令行的一般形式为: #include 文件名“ 对文件包含命令还要说明以下几点: 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。 使用尖括号表示在系统头文件目录中去查找(头文件目录可以由用户来指定);使用双引号则表示首先在当前的源文件目录中查找,若未找到才到系统头文件目录中去查找。用户编程时可根据自己文件所在的位置来选择某一种形式。 一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。 文件包含允许嵌套,即在一个被包含的文件中又可以包含别的文件。 3.1.3 条件编译 第一种形式 第二种形式 第三种形式 3.2 C语言中的内存分配 3.2.1 C语言程序所占内存分类 3.2.2 堆和栈的区别 3.2.1 C语言程序所占内存分类 一个由C语言的程序占用的内存分为以下几个部分。 栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等,其操作方式类似于数据结构中的栈。 堆(heap):一般由程序员动态分配(调用mallo()函数)和释放(调用free()函数),若程序员不释放,程序结束时可能由操作系统回收。 数据段(data):存放的是全局变量、静态变量、常数。根据存放的数据,数据段又可以分成普通数据段(包括可读可写/只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放未初始化的全局变量)。 代码段(code):用于存放程序代码。 3.2.2堆和栈的区别 申请方式 栈(stack)是由系统自动分配的;堆(head)需要程序员自己申请,并在申请时指定大小 。 申请后系统的响应 堆在操作系统中有一个记录空闲内存地址的链表,当系统收到程序的申请时,系统就会开始遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。 3.2.2堆和栈的区别 申请大小的限制 堆是向高地址扩展的数据结构,是不连续的内存区域;栈是向低地址扩展的数据结构,是一块连续的内存的区域。 申请速度的限制 堆是由malloc()等语句分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来很方便。栈由系统自动分配,速度较快,但程序员一般无法控制。 堆和栈中的存储内容 堆一般在堆的头部用一个字节存放堆的大小,堆中的具体内容由程序员安排。 3.3 程序的可移植性考虑 3.3.1 字长和数据类型 3.3.2 数据对齐 3.3.3 字节顺序 3.3.1 字长和数据类型 能够由机器一次完成处理的数据称为字,不同体系结构的字长通常会有所区别。 3.3.2 数据对齐 对齐是内存数据与内存中的相对位置相关的话题。 一些体系结构对对齐的要求非常严格。通常基于RISC的系统载入未对齐的数据会导致处理器陷入(一种可处理的错误);还有一些系统可以访问没有对齐的数据,但性能会下降。 3.3.3 字节顺序 字节顺序是指一个字中各个字节的顺序,有大端模式和小端模式。 大端模式是指在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端模式是指与大
您可能关注的文档
- 家装公司周工作安排参考计划.doc
- 家装图纸标准.doc
- 家用汽车选购与使用维护.ppt
- 家装竣工验收资料表格.doc
- 家长会心理健康讲座.doc
- 容灾的未来:面向灾备资源共享的容灾云技术.doc
- 容积和容积单位课堂实录与评析.doc
- 宽带薪酬标准设计五步法.docx
- 宽带增值业务培训资料.ppt
- 宾馆管理系统实训报告.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
最近下载
- 2024年河北省高考英语试卷(含答案解析).docx
- 特色办学建设规划及实施方案.doc VIP
- 惠州市2024届高三第三次调研考试(三调)语文试卷(含答案).pdf
- 2021年农产品商贸流通专业群人才培养方案(高职).pdf
- 热血三国秒墙计算器.pdf VIP
- 教育调查与研究报告大学.docx VIP
- 《急诊与灾难医学》第十章 急性中毒.pptx
- 2024年高考真题和模拟题英语分类汇编:专题10 完形埴空(新高考15空) (原卷版) (全国通用).docx VIP
- 大唐国际胜利东二号露天煤矿采场边坡稳定性分析-采矿工程专业论文.docx
- 2024年新入职护士培训考试题库资料800题(含答案).pdf
文档评论(0)