词条 | 嵌入式GUI开发设计:基于MiniGUI |
释义 | 它既适合需要进入MiniGUI应用程序开发领域的人员,也适合需要对通用的GUI技术学习的人员。 书名:嵌入式GUI开发设计——基于MiniGUI 作者:北京亚嵌教育研究中心组韩超 ISBN:9787121086069 类别:MiniGUI 页数:312页 定价:¥45.00元 出版社:电子工业出版社 出版时间:2009-5-1 装帧:平装 开本:1/16 目 录(第1章 嵌入式GUI系统概述 1 第2章 MiniGUI的特点和发展 9 第3章 MiniGUI的体系结构 26 第4章 MiniGUI的程序框架 39 第5章 MiniGUI的窗口与消息机制 50 第6章 MiniGUI的对话框编程 67 第7章 MiniGUI的控件编程 84 第8章 MiniGUI的菜单 106 第9章 MiniGUI的键盘和鼠标 119 第10章 MiniGUI的GDI编程 134 第11章 MiniGUI其他方面的编程 167 第12章 MiniGUI扩展库的相关 第13章 MiniGUI的GDI演示 216 第14章 MiniGUI的对话框演示 228 第15章 MiniGUI实现的图像查看器 235 第16章 MiniGUI实现记事本 246 第17章 MiniGUI3.0的新特性 258) 附录B MiniGUI的扩展控件 284(第一部分 基础知识 第二部分 Linux环境中 第三部分 库函数 第四部分 C语言高级编程 第五部分 在嵌入式) 本书特点:基于处于快速发展阶段的MiniGUI系统,由权威培训机构为读者解读MiniGUI3.0新技术的应用。 结合了GUI理论和MiniGUI系统的实现,让读者同时从广度和深度上对嵌入式GUI乃至嵌入式系统有深入的了解。 提供了详尽的配套光盘,包含大量的源代码和应用,可使读者具备快速搭建系统的能力,并能快速上手,搭建自己的系统。 书中包含众多事例,可操作性、可扩展性强,能充分发挥读者的想象力。 内 容 简 介《嵌入式GUI开发设计——基于MiniGUI》是一本嵌入式图形用户系统应用开发方面的教程,由作者韩超结合飞漫官方授权资料编著。本书通过介绍MiniGUI系统的开发,给读者一个学习嵌入式GUI程序设计和实现的平台。MiniGUI系统是一个由中国人实现、目前广泛在应用的优秀嵌入式GUI系统,通过这个系统的学习,可以了解嵌入式GUI开发的思想和方法,也可以加深对嵌入式系统开发的理解。本书结合嵌入式GUI系统的通用知识对MiniGUI系统进行了充分的介绍,篇幅控制详略得当,配合光盘使用,可以达到事半功倍的效果。本书主体分成三个层次:MiniGUI的架构、MiniGUI的各种功能、基于MiniGUI构建应用程序,这是学习嵌入式GUI系统较为便捷和高效的方式。 前 言时至今日,MiniGUI已经走过了十年的路程。目前的MiniGUI已经成为一套具有完整清晰定义的移植层、优秀的窗口管理机制、丰富而易用的控件并可以进行外观定制的嵌入式GUI系统;在上层的组件中,MiniGUI还包含了3D接口、输入法、打印甚至浏览器等组件。从一款默默无闻的小型GUI程序,到现在成为全球嵌入式软件领域的鼎鼎大名的软件。对于中国人来说,MiniGUI所承载不仅仅是一款软件的成功,更体现了中国人的东方式智慧完全有能力在世界的嵌入式软件行业中占据一席之地。可以肯定地说,MiniGUI的诞生和发展鼓舞了中国人在软件研发领域的热情,也坚定了中国人进入世界嵌入式软件开发前沿的信念。 MiniGUI的发展历程同时也从一个侧面体现了中国嵌入式技术的发展历程。MiniGUI的创始人魏永明先生等一批中国嵌入式技术的先驱引领了嵌入式技术在中国发展的潮流。自从1998年魏永明先生发布MiniGUI的第一个版本开始,这个项目就一直吸引并带领着来自不同专业、不同领域的国人进入了嵌入式技术的世界。作为一个交叉学科,嵌入式系统的技术需要综合性的人才,MiniGUI的发展吸引了更多人进入这个领域。作为一个嵌入式的GUI系统,MiniGUI的开发让人们更多熟悉了嵌入式系统的开发流程。在这个过程中,嵌入式技术的门槛对于大众降低了很多,以前某些只有研发企业和高校才有能力开发的项目,现在普通的爱好者也可以参与开发。更多人的参与同时也促进嵌入式技术在中国有了更好的发展。 从MiniGUI的开源版本中,我们深刻地感受到了这个中国人自己创作的一套完整嵌入式GUI系统的魅力。随着对MiniGUI的学习,很多人在数年之前进入了嵌入式系统领域,他们当中很多人成为了现今中国大陆地区嵌入式技术的中坚。在对MiniGUI的关注中,每一个从事嵌入式研发相关的人员都可以得到丰富的收获,从API的制定、为移植构建的抽象层、代码组织、软件组织架构乃至整个嵌入式系统中间件的架构。 飞漫公司的成立也已经有6个年头了,MiniGUI在飞漫公司的运作中得到了更大的发展。在这个过程中,我们欣喜地看到MiniGUI并没有像很多纯粹的技术产品一样虎头蛇尾,而是在开源版本和商业版本双线上成功地发展。MiniGUI同时具有了开源软件开放性的特点和商业软件高品质的特点。 作为一款软件产品,MiniGUI的商业版本使得MiniGUI得到了长足的进展,让MiniGUI稳定地运行到了更多的设备上。目前,MiniGUI在小型嵌入式上面的移植具有无可比拟的优势。对比同类的嵌入式GUI系统,MiniGUI不仅性能开销较低,而且明显具有更强的可移植性和可配置性。MiniGUI可以灵活提供各种功能定制:小到简单的图形绘制库,大到整个系统的解决方案。由于MiniGUI系统生根发芽的土壤在中国,它相比其他的GUI系统更适合由中国人来开发。目前MiniGUI在中高端手机、PDA类产品、机顶盒、智能家居以及工控、仪表领域都有了广泛的应用。 尤其值得指出的是,虽然飞漫是一家研发软件产品的公司,但是魏永明先生带领飞漫团队对中国技术界本着非常负责任的态度,依然在进行着一定程度的技术传播和交流,这也很大程度上促进了嵌入式软件技术的提高。飞漫的成功也给了中国软件业发展一个很好的启迪。 MiniGUI在稳定发展了若干年后,目前最新的版本为MiniGUI3.0。此时的MiniGUI在接口上已经基本稳定,但也具有了很强的扩展性。MiniGUI正向着可以提供整套的解决方案、友好的开发环境、并且可以接受第三方的应用的方向发展。飞漫的定制模式也让基于MiniGUI的软件开发的分工更加明确,这样可以使基于MiniGUI的产品具有更快更好的开发效率。MiniGUI的发展历程不仅是技术上的发展,也带来了对行业产业链和发展模式的思考。 本书通过介绍MiniGUI系统的开发,给读者展示一个学习GUI系统程序的平台。本书的内容可以体现两个层次的内容:其一是对MiniGUI的应用程序开发的学习,读者可以通过对照光盘中的程序学习本书的内容,在学习之后可以单独进行MiniGUI应用程序的开发;其二是对GUI系统程序设计思想的学习,虽然MiniGUI系统和其他GUI系统存在差异,但是GUI系统整体设计的思想是通用的,读者根据本书的内容学习并进行思考后,在开发其他的GUI系统的时候也可以快速地上手。 对于一个GUI系统的学习,可以分成三个层次:第一个层次是了解GUI系统层次结构和程序框架;第二个层次是熟悉这个GUI系统所提供的功能;第三个层次是如何使用GUI系统构建完整的应用程序。 本书的第3章、第4章主要介绍了MiniGUI系统在第一个层次的内容。通过这两章的学习,读者可以熟悉MiniGUI系统的软件各个层次的关系,也可以学会如何使用MiniGUI构建一个简单的应用程序。 本书的第5章到第12章主要介绍了MiniGUI系统在第二个层次的内容。主要内容为MiniGUI主窗口、对话框、控件的使用、GDI编程以及其他一些方面的内容。其中,主窗口、对话框和控件的使用三者构成了完成MiniGUI应用程序的主体;GDI名为图形设备接口,这是一组较低层次的API,GDI编程可以让读者深入控制系统,进行更灵活的程序设计;其他方面的内容包括菜单、键盘和鼠标处理、图标、光标、定时器等内容。第12章单独介绍了MiniGUI扩展库的内容,包括扩展的对话框、控件和皮肤等功能。 本书的第13章到第16章主要介绍了MiniGUI系统在第三个层次的内容。这些章节通过展示MiniGUI演示库的例子,让读者学习使用MiniGUI提供的接口构建完成的应用程序。这些简单的应用程序可以体现GUI系统设计的一些思路。 本书既适合需要进入MiniGUI应用程序开发领域的人员,也适合需要学习通用的GUI技术的人员。MiniGUI系统是一个目前广泛应用的嵌入式GUI系统,可以通过学习这个系统进入GUI程序开发的领域。本书要求读者具有C语言编程的一定基础。本书的开发环境可以使用Ubuntu、Fedora或OpenSuse等Linux发行版,需要安装了GCC、make等基本的工具,然后可以根据本书提供的光盘建立开发环境。本书光盘中也提供了部分Windows中的开发环境,可以在Windows的Visual C++6.0环境中使用。 在本书的学习过程中,为了取得事半功倍的效果,读者可以使用边学边练的方式,对于书中的示例程序,应对照光盘中的程序或自己练习编写程序进行验证和扩展。由于各个控件的使用相似性较多,本书只选取了具有代表性的进行介绍,并在附录中列出了控件的特性。读者可以通过参考MiniGUI的API手册和头文件中的描述,自己编写程序进行更多的练习。对于完整GUI程序的组织,读者应根据自身需要完成软件的需求,结合一般软件工程的思想和MiniGUI接口的特点进行设计和实现。此外,MiniGUI的API大都是通过深思熟虑发布的,具有简洁、含义明确和便于扩展的特点,读者在这方面进行思考,可以提高自身软件工程的思想。 本书由韩超规划和编著,北京飞漫软件技术有限公司为本书提供了丰富的资料。本书的配套光盘由韩超组织完成,其中部分内容依据北京飞漫软件技术有限公司授权加入。在本书及其配套光盘的编著过程中,亚嵌嵌入式教育研究中心为本书提供了支持,郎铁山、王旭光参与了审校工作。本书的出版也是飞漫多年技术积累的成果。本书作者和参与编著人员长期立志于推广嵌入式技术,努力促进公众的技术共同进步。由于时间仓促,本书可能依然存在一些错误和问题,请读者见谅。MiniGUI的发展需要广大的技术人员共同参与,欢迎读者讨论和指点。 作 者 2008,北京 目 录第1章 嵌入式GUI系统概述 11.1 嵌入式GUI系统 1 1.1.1 嵌入式GUI系统的作用 1 1.1.2 嵌入式GUI系统的层级结构 2 1.2 嵌入式GUI系统的设计原则 4 1.3 嵌入式GUI系统发展状况 6 1.3.1 QT/Embedded 6 1.3.2 Microwindows 7 1.3.3 MiniGUI 8 第2章 MiniGUI的特点和发展 92.1 MiniGUI与嵌入式GUI系统 9 2.1.1 MiniGUI的设计理念 9 2.1.2 MiniGUI与其他嵌入式GUI 2.1.2 系统的比较 12 2.2 MiniGUI的发布版本 14 2.2.1 MiniGUI 1.6 15 2.2.2 MiniGUI 2.0 16 2.3 MiniGUI 3.0 19 2.3.1 MiniGUI 3.0核心库的新功能 19 2.3.2 MiniGUI 3.0的新组件 19 2.4 MiniGUI的展望 20 2.4.1 MiniGUI的集成开发环境mStudio 20 2.4.2 MiniGUI 4.0 21 2.5 MiniGUI的发展和应用 21 2.5.1 MiniGUI的发展 21 2.5.2 MiniGUI的应用领域 23 第3章 MiniGUI的体系结构 263.1 MiniGUI的结构概述 26 3.2 MiniGUI的系统需求 29 3.2.1 MiniGUI所支持的操作系统 29 3.2.2 MiniGUI所支持的硬件平台 29 3.2.3 MiniGUI对系统资源的占用情况 29 3.3 MiniGUI的层次结构 29 3.3.1 MiniGUI的移植层 29 3.3.2 MiniGUI的核心实现 31 3.3.3 MiniGUI的API 32 3.4 MiniGUI的运行模式 34 3.4.1 MiniGUI-Threads模式 35 3.4.2 MiniGUI-Processes模式 36 3.4.3 MiniGUI-Standalone模式 38 第4章 MiniGUI的程序框架 394.1 GUI程序设计的基本方式 39 4.1.1 程序中的消息机制 39 4.1.2 回调函数的使用 40 4.2 程序示例与分析 42 4.2.1 MiniGUI的HelloWorld程序示例 42 4.2.2 程序分析 45 第5章 MiniGUI的窗口与消息机制 505.1 MiniGUI的窗口系统 50 5.1.1 窗口系统的概念 50 5.1.2 MiniGUI窗口系统 51 5.2 MiniGUI的消息处理机制 52 5.2.1 消息机制的概念 52 5.2.2 MiniGUI的消息机制 52 5.2.3 MiniGUI的消息机制类型 54 5.3 主窗口及其消息处理编程 55 5.3.1 主窗口的信息隐藏和对象编程 55 5.3.2 在主窗口中使用的附加信息 56 5.3.3 消息处理的方式与自定义消息 57 5.3.4 较完整的消息处理 59 5.3.5 主窗口及其消息处理的设计思想和编程内容总结 65 第6章 MiniGUI的对话框编程 676.1 MiniGUI中的对话框 67 6.1.1 对话框的概念 67 6.1.2 MiniGUI的对话框的使用方式 67 6.2 MiniGUI对话框编程 72 6.2.1 使用对话框模版编程 72 6.2.2 非模式对话框的使用 75 6.2.3 主窗口和对话框的结合使用 79 6.2.4 对话框的设计思想和编程内容总结 83 第7章 MiniGUI的控件编程 847.1 MiniGUI中的控件 84 7.1.1 控件的概念 84 7.1.2 MiniGUI的控件的使用方式 85 7.2 MiniGUI中的控件基本编程 90 7.2.1 使用控件的简单示例Hello World 90 7.2.2 多控件的使用 91 7.2.3 控件通知函数使用 94 7.2.4 控件的设计思想和编程内容总结 98 7.3 MiniGUI中的控件高级编程 98 7.3.1 自定义控件的编程 98 7.3.2 控件子类化 101 7.3.3 MiniGUI中的控件高级编程内容总结 104 第8章 MiniGUI的菜单 1068.1 MiniGUI中的菜单 106 8.1.1 菜单的概念 106 8.1.2 MiniGUI中菜单的概念 106 8.2 MiniGUI中的编程 111 8.2.1 菜单的编程示例 111 8.2.2 菜单的设计思想和要点 117 第9章 MiniGUI的键盘和鼠标 1199.1 MiniGUI中的输入设备的概念 119 9.1.1 输入的基本概念 119 9.1.2 MiniGUI的输入 119 9.2 MiniGUI中的键盘编程 120 9.2.1 键盘输入的过程 120 9.2.2 键盘的消息 120 9.2.3 键盘的状态和输入焦点的信息 122 9.2.4 键盘示例程序 123 9.2.5 键盘编程要点总结 126 9.3 MiniGUI中的鼠标 126 9.3.1 鼠标输入的过程 126 9.3.2 鼠标消息 127 9.3.3 鼠标捕获问题 129 9.3.4 鼠标编程示例 129 9.2.5 鼠标编程要点总结 133 第10章 MiniGUI的GDI编程 13410.1 GUI系统中的图形设备 134 10.1.1 图形设备在GUI中的作用 134 10.1.2 MiniGUI中的GDI概念 134 10.2 MiniGUI中窗口绘制和刷新 135 10.2.1 何时进行绘制 135 10.2.2 MSG_PAINT消息 136 10.2.3 有效区域和无效区域 137 10.3 图形设备上下文 137 10.3.1 图形设备的抽象 137 10.3.2 设备上下文句柄的获取和释放 139 10.3.3 设备上下文句柄的保存和恢复 141 10.3.4 系统内存中的设备上下文 141 10.3.5 屏幕设备上下文 141 10.3 映射模式和坐标空间 141 10.3.1 映射模式 141 10.3.2 视口和窗口 142 10.3.3 设备坐标的转换 143 10.3.4 坐标系的偏移和缩放 144 10.4 颜色与调色板 144 10.4.1 颜色与调色板的概念 144 10.4.2 有关颜色的接口 146 10.4.3 颜色处理的示例程序 148 10.5 在图形设备的绘制基本图形 150 10.5.1 矩形操作 150 10.5.2 基本绘图属性 150 10.5.3 基本绘图函数 151 10.5.3 基本绘图程序示例 152 10.6 位图的使用 155 10.6.1 位图的概念 155 10.6.2 位图的装载 157 10.6.3 位图的绘制 158 10.6.4 位图程序示例 159 10.7 文本的处理和显示 160 10.7.1 字符集和编码 161 10.7.2 设备字体 162 10.7.3 逻辑字体 162 10.7.4 文本输出 163 10.7.5 文本程序示例 164 第11章 MiniGUI其他方面的编程 16711.1 图标编程 167 11.1.1 图标的文件接口 167 11.1.2 图标的创建 169 11.1.3 系统图标的使用 169 11.1.4 图标的示例程序 170 11.1.5 图标编程要点总结 171 11.2 光标编程 172 11.2.1 光标的文件接口 172 11.2.2 光标限定 174 11.2.3 光标的创建 174 11.2.4 系统光标的使用 175 11.2.5 光标的示例程序 175 11.2.6 光标编程要点总结 177 11.3 定时器的使用 178 11.3.1 定时器的作用 178 11.3.2 MiniGUI中的定时器编程 178 11.3.3 定时器的程序示例 179 11.3.4 定时器编程的要点总结 180 第12章 MiniGUI扩展库的相关第12章 内容 181 12.1 MiniGUI扩展库概述 181 12.2 扩展库的初始化和卸载函数 182 12.3 扩展库提供的控件 182 12.3.1 扩展控件的概念 182 12.3.2 扩展控件的示例程序 184 12.4 扩展库提供的对话框 189 12.4.1 mywins库提供的功能 189 12.4.2 文件对话框、新文件对 12.4.2 话框和颜色选择对话框 197 12.5 皮肤界面功能 200 12.5.1 MiniGUI提供的皮肤界 12.5.1 面功能概述 200 12.5.2 皮肤的组成 201 12.5.3 皮肤窗口、回调函数和 12.5.3 设置 204 12.5.4 各种皮肤元素相关功能 12.5.4 函数 206 12.5.5 皮肤使用示例 209 第13章 MiniGUI的GDI演示 21613.1 GDI演示概述 216 13.1.1 GDI演示的目的 216 13.1.2 实现结果 216 13.2 GDI演示程序设计 219 13.2.1 GDI演示程序功能划分 219 13.2.2 程序的结构 219 13.3 GDI演示程序的重点细节 13.3 分析 219 13.3.1 程序的入口和框架 219 13.3.2 各种GDI演示部分 221 第14章 MiniGUI的对话框演示 22814.1 对话框演示的功能描述 228 14.1.1 对话框演示的目的 228 14.1.2 实现结果 228 14.2 对话框演示的设计 230 14.2.1 对话框演示程序功能划分 230 14.2.2 程序的结构 230 14.3 对话框演示的重点细节分析 231 14.3.1 程序的入口和框架 231 14.3.2 各个对话框的实现 232 第15章 MiniGUI实现的图像查看器 23515.1 图像查看器的功能和需求 235 15.1.1 功能和需求 235 15.1.2 实现结果 236 15.2 图像查看器的设计 237 15.2.1 功能模块的划分 237 15.2.2 程序框架的组织及依赖 15.2.2 部分 237 15.3 图像查看器的重点细节分析 238 15.3.1 主要函数和数据结构 238 15.3.2 程序的其他功能 244 15.4 设计思想总结 244 第16章 MiniGUI实现记事本 24616.1 记事本的功能描述 246 16.1.1 功能和需求 246 16.1.2 实现结果 246 16.2 记事本的设计 249 16.2.1 功能模块的划分 249 16.2.2 程序框架的组织及依赖 16.2.2 部分 249 16.3 记事本的重点细节分析 250 16.3.1 主要函数和数据结构 250 16.3.2 程序中的其他内容 255 16.4 设计思想总结 256 第17章 MiniGUI3.0的新特性 25817.1 MiniGUI 3.0的新功能 258 17.1.1 外观渲染器 258 17.1.2 双向文本的显示与输入 260 17.1.3 不规则窗口 260 17.1.4 字体增强 260 17.1.5 其他增强功能 261 17.2 MiniGUI 3.0的基本示例 261 17.2.1 类似Windows的桌面 261 17.2.2 使用外观渲染器 263 17.2.3 窗口元素的属性 265 17.2.4 不规则窗口区域 269 17.2.5 双缓冲特性 271 17.3 MiniGUI 3.0新功能总结 272 附录B MiniGUI的扩展控件 284第一部分 基础知识第1章 Linux环境下C语言的开发 2 1.1 Linux下的C语言开发环境 2 1.2 在Linux中使用C语言开发 3 1.2.1 开发流程和开发工具 3 1.2.2 Linux中程序的运行原理 4 第2章 嵌入式环境中的C语言开发 7 2.1 嵌入式C语言的开发环境 7 2.2 嵌入式开发中C语言编程要点 9 第二部分 Linux环境中C语言的开发环境和工具 第3章 Linux的文本编辑工具VI 12 3.1 VI编辑器概述 12 3.1.1 VI简介 12 3.1.2 VI的工作模式和使用 3.1.2 之前的准备 12 3.1.3 进入和退出VI 13 3.2 VI的增强版VIM 16 3.3 VI编辑器的基本使用方法 17 3.3.1 在屏幕上移动光标 17 3.3.2 插入文本 20 3.3.3 删除文本 22 3.3.4 修改文本内容 25 3.3.5 替换文本内容 27 3.3.6 合并文本内容 30 3.3.7 移动文本内容 30 3.4 VI编辑器的命令和高级操作 32 3.4.1 VI常用命令的列表 32 3.4.2 VI的一些高级的操作和 3.1.2 使用技巧 35 第4章 GCC程序开发工具 39 4.1 GNU工具综述 39 4.2 GCC的编译和连接 43 4.2.1 工程示例 43 4.2.2 编译、汇编和连接 46 4.2.3 动态库 48 4.3 GCC的二进制工具 49 4.3.1 ar(归档工具) 49 4.3.2 readelf(读取ELF格式 3.1.2 文件信息) 51 4.3.3 strings(查看字符串) 54 4.3.4 nm(显示符号信息) 55 4.3.5 strip(删除符号) 57 4.3.6 objdump(显示目标 3.1.2 文件信息) 58 4.3.7 objcopy(复制目标文件) 63 第5章 make工程管理工具 67 5.1 make和Makefile 67 5.1.1 make机制概述 67 5.1.2 make和Makefile的使用 68 5.2 Makefile使用示例 69 5.2.1 简单的Makefile 69 5.2.2 Makefile中的依赖关系 71 5.2.3 Makefile中使用隐含规则 5.2.4 Makefile中指定依赖关系的 3.1.2 编译 76 5.3 自动生成Makefile 78 5.3.1 自动生成Makefile的意义和 3.1.2 相关工具 78 5.3.2 自动生成Makefile的流程 79 第6章 GDB调试工具 85 6.1 GDB简介 85 6.2 使用GDB调试程序 86 6.2.1 基本操作 88 6.2.2 查看命令 90 6.2.3 高级命令 92 6.2.4 attach命令的使用 94 6.3 远程GDB调试 95 6.3.1 本地GDB调试和远程GDB 3.1.2 调试的比较 95 6.3.2 远程GDB调试流程 97 6.3.3 远程GDB调试示例 98 第三部分 库函数第7章 C语言标准库函数 106 7.1 ISO的C语言标准库函数 7.1 分类 106 7.2 标准格式化输入/输出类函数 107 7.2.1 scanf函数:格式化输入字符串 107 7.2.2 printf函数:格式化输出字符串 109 7.2.3 putchar函数:输出字符到标准输出 111 7.2.4 getchar函数:从标准输入获取字符 111 7.2.5 putc函数:向文件输出字符 112 7.2.6 getc函数:从文件输入字符 112 7.2.7 gets函数:获得字符串 112 7.2.8 puts函数:输出指定字符串 113 7.2.9 ungetc函数:把字符 3.1.2 写回流中 113 7.3 字符处理类函数 114 7.4 字符串处理及转换函数 116 7.4.1 sprintf函数:格式化输出 3.1.2 字符串到一个缓冲区 116 7.4.2 strcat和strncat函数: 字符串连接 119 7.4.3 strcpy和strncpy函数:字符串复制 120 7.4.4 strcmp和strncmp函数:字符串比较 121 7.4.5 strlen函数:获取字符串长度 122 7.4.6 strchr和strrchr函数:字符/字符串定位 122 7.4.7 strstr函数:字符串查找 123 7.4.8 strrev函数:字符串逆序 124 7.4.9 strupr和strlwr函数:字母形式转换 125 7.4.10 strdup和strndup函数:字符串复制 125 7.4.11 memset函数:内存设置 126 7.4.12 memmove函数:内存移动 126 7.4.13 memcmp函数:内存比较 127 7.4.14 memcpy函数:内存复制 128 7.5 数学计算类函数 128 7.6 数据结构和算法类函数 133 7.6.1 bsearch函数:二元搜索 133 7.6.2 lfind函数:线性搜索 134 7.6.3 lsearch函数:线性搜索 135 7.6.4 qsort函数:利用快速排序法排列数组 136 7.6.5 rand函数:产生随机数 136 7.6.6 srand函数:设置随机数种子 137 7.7 文件I/O操作类相关函数 137 7.7.1 fopen函数:打开文件 138 7.7.2 fclose函数:关闭文件 139 7.7.3 fgetc函数:从文件中读取一个字符 139 7.7.4 fputc函数:将一指定字符写入文件流中 139 7.7.5 fgets函数:从文件中读取 一字符串 140 7.7.6 fputs函数:将一指定的字符串写入文件内 140 7.7.7 rewind函数:重设文件流的读写位置为文件开头 141 7.7.8 ftell函数:取得文件流的读取位置 141 7.7.9 fseek函数:移动文件流的读写位置 141 7.7.10 fwrite函数:将数据写至文件流 142 7.7.11 fread函数:从文件流读取数据 142 7.7.12 remove函数:删除文件 143 7.7.13 rename函数:更改文件名称或位置 143 7.7.14 freopen函数:重新打开文件 144 7.7.15 fflush函数:同步缓冲区 144 7.7.16 fgetpos函数:获得文件位置 145 7.7.17 fsetpos函数:设置文件位置 145 7.7.18 mktemp函数:建立临时文件 146 7.7.19 tmpfile函数:临时文件 146 7.7.20 tmpnam:得到临时文件名 147 7.8 日期时间类函数 147 7.8.1 clock函数:获得CPU时间 148 7.8.2 time函数:获得当前日历时间 148 7.8.3 difftime函数:获得时间差值 148 7.8.4 gmtime函数:将日历时间转换成UTC时间 149 7.8.5 mktime函数:将UTC时间转换成日历时间 149 7.8.6 asctime函数:将UTC时间转换成字符串 149 7.8.7 ctime函数:将日历时间转换成当地时间的字符串 150 7.8.8 localtime函数:将日历时间转换成本地时间 150 7.8.9 strftime函数:转换日期和时间格式 151 7.9 国际化和本地化函数 152 7.9.1 setlocale函数:本地化控制函数 153 7.9.2 localeconv函数:本地化转换 154 7.10 错误处理类函数 155 7.10.1 clearerr函数:清除流中的 7.10.1 结束指示符和错误指示符 155 7.10.2 feof函数:指示文件结束 155 7.10.3 ferror函数:指示文件出错 156 7.10.4 perror函数:输出出错信息 156 7.10.5 errno函数:错误编号记录 156 7.11 其他一些工具函数 157 7.11.1 assert函数:程序诊断 157 7.11.2 长跳转函数 157 7.11.3 可变长的参数控制函数 160 7.11.4 获取结构体成员函数(宏) 161 7.12 一些标准库中有用的宏 161 第8章 Linux中C语言的扩展库函数 163 8.1 文件I/O操作函数 163 8.1.1 open函数:打开文件 163 8.1.2 close函数:关闭文件 164 8.1.3 read函数:读文件 165 8.1.4 write函数:写文件 165 8.1.5 lseek函数:文件定位 167 8.1.6 ioctl函数:文件控制 167 8.1.7 flock函数:锁定文件 167 8.1.8 mmap函数和munmap函数:内存映射 168 8.1.9 create函数:创建新文件 170 8.1.10 dup函数和dup2函数:复制文件描述符 171 8.1.11 fcntl函数:改变已打开的文件的属性 171 8.2 文件权限相关的操作函数文件权限相关的操作函数 172 8.2.1 access函数:判断是否具有存取文件的权限 172 8.2.2 chown函数和fchown函数:改变文件的所有者 173 8.2.3 chmod函数和fchmod函数:改变权限 173 8.2.4 unlink函数:删除文件 173 8.2.5 utime函数和utimes函数:改变文件时间 174 8.2.6 umask函数:设置建立新文件时的权限掩码 175 8.2.7 link函数:建立文件连接 175 8.2.8 stat函数、fstat函数和lstat函数:获取文件信息 175 8.3 用户组操作函数 176 8.3.1 getgid函数和setgid函数:获得/设置组识别码 176 8.3.2 getegid函数和setegid函数:获得/设置有效的组识别码 177 8.3.3 getuid函数和setuid函数:获得/设置真实的用户识别码 177 8.3.4 geteuid函数和seteuid函数:获得/设置有效的用户识别码 178 8.3.5 getgroups函数和setgroups函数:获得/设置组代码 178 8.4 信号类函数 179 8.4.1 kill函数:传送信号给指定的进程 181 8.4.2 raise函数:信号发送函数 181 8.4.3 alarm函数:设置超时函数 182 8.4.4 signal函数:信号安装函数 182 8.5 进程处理函数 183 8.5.1 getpid函数和getppid函数:获得进程ID和父进程ID 183 8.5.2 fork函数:建立子进程 183 8.5.3 sleep函数和usleep函数: 8.2.1 让进程暂停执行一段时间 185 8.5.4 exec函数族:找到可执行文件 185 8.5.5 _ exit函数和_Exit函数:结束进程执行 188 第四部分 C语言高级编程第9章 动态内存的堆与栈 190 9.1 程序内存区域的使用 190 9.1.1 静态内存与动态内存 190 9.1.2 C语言中的动态内存 191 9.2 C程序中栈空间的使用 196 9.2.1 参数使用栈空间 196 9.2.2 自动变量使用栈空间 199 9.2.3 程序中较大的栈 201 9.2.4 栈空间的特性 202 9.3 C程序中的堆空间使用 203 9.3.1 分配和释放堆内存的库函数 203 9.3.2 库函数使用 204 9.3.3 堆内存的特性 218 9.4 堆内存和栈内存使用的比较 222 9.4.1 利用返回值传递信息 222 9.4.2 利用参数传递信息 226 9.4.3 堆与栈内存管理的区别 231 第10章 函数指针的使用 232 10.1 函数指针的概念 232 10.1.1 C语言函数的本质 232 10.1.2 函数指针在C语言中的 10.1.2 意义 234 10.2 函数指针的使用 237 10.2.1 函数指针使用初步 237 10.2.2 函数指针的类型定义 240 10.2.3 函数指针作为结构体成员 242 10.2.4 函数指针作为函数的参数 243 10.2.5 函数指针作为函数的 10.2.5 返回值 244 10.2.6 函数指针数组 246 10.3 函数指针使用示例 248 第11章 回调函数的使用 252 11.1 回调函数的概念与作用 252 11.1.1 程序调用的方式 252 11.1.2 回调函数的作用 254 11.2 回调函数的语法 254 11.2.1 简单的回调函数 254 11.2.2 完全形式的回调函数 256 11.3 回调函数的使用 259 11.3.1 qsort中的回调函数 259 11.3.2 atexit和on_exit函数的注册退出函数 263 第12章 C语言实现对象编程 268 12.1 C语言实现基于对象编程的概念与作用 268 12.2 C语言基于对象编程实现封装 269 12.2.1 简单的程序示例 269 12.2.2 C语言基于对象编程的详解 272 12.2.3 C语言基于对象编程与C++面向对象编程的对比 275 12.3 C语言基于对象编程实现部分继承功能 278 12.3.1 利用数据结构的包含实现继承功能 279 12.3.2 利用私有指针实现继承功能 282 12.3.3 C语言实现继承的总结 287 12.4 C语言基于对象编程实现 12.4 部分多态功能 288 12.4.1 利用操作指针组的包含实现多态功能 288 12.4.2 C语言实现多态功能的总结 292 12.5 对C语言实现基于对象 12.5 编程的思考 292 12.5.1 C语言基于对象编程的特性 292 12.5.2 C语言基于对象编程中接口、实现和调用者的关系 293 第五部分 在嵌入式环境下的C语言编程 第13章 C语言程序的内存布局 295 13.1 C语言程序的存储区域 295 13.2 C语言程序的段 297 13.2.1 段的分类 297 13.2.2 程序中段的使用 298 13.3 可执行程序的连接 301 13.3.1 可执行程序的组成 301 13.3.2 各个目标文件的关系 303 13.3.3 连接错误示例 304 13.4 C语言程序的运行 309 13.4.1 RAM调试运行 311 13.4.2 固化程序的XIP运行 312 13.4.3 固化程序的加载运行 313 13.4.4 C语言程序的运行总结 315 第14章 嵌入式C语言常用语法 317 14.1 内存指针操作 317 14.1.1 内存操作的意义 317 14.1.2 使用指针操作内存 319 14.1.3 volatile的使用 324 14.1.4 嵌入式系统指针的实际应用 325 14.2 位操作 327 14.2.1 位操作的意义 327 14.2.2 位操作的语法 328 14.3 大小端与对齐问题 330 14.3.1 大小端问题 331 14.3.2 内存对齐问题 335 14.3.3 结构体成员的对齐问题 338 14.4 程序的跳转 344 14.4.1 嵌入式系统程序跳转的类型 344 14.4.2 C语言中实现程序的跳转 345 第15章 嵌入式C语言编程的技巧 348 15.1 程序的优化技巧 348 15.1.1 循环缓冲区 348 15.1.2 查表法 350 15.1.3 针对循环执行效率的优化 353 15.2 关于小数运算 355 15.3 函数参数和返回值的传递 357 15.4 变量的初始化技巧 360 15.4.1 数组的初始化 360 15.4.2 结构体的初始化 362 15.4.3 变量的初始化总结 362 15.5 程序的调试和宏使用的技巧 363 15.5.1 打印文件、函数和程序行 363 15.5.2 #:字符串化操作符 364 15.5.3 ##:连接操作符 366 15.5.4 调试宏的第一种定义方式 367 15.5.5 调试宏的第二种定义方式 368 15.5.6 对调试语句进行分级审查 369 15.5.7 条件编译调试语句 370 15.5.8 使用do…while的宏定义 372 15.6 代码剖析 373 参考文献 378 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。