版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统C语言编程基础,杨高波,SNBC,.2,目录,关于本课程 C语言复习 编程规范 开发高效程序的技巧,.3,为什么学习本课程,会C语法与会用C语言写程序是两个概念 C的灵活性以及由此而产生的陷阱非常多 The Most Beautiful Language and Most Dangerous Language in the Programming World! 本课程将嵌入式系统中最基本的(最经常用到的)概念与技巧介绍给大家,.4,小测验?,.5,Quiz 1,所有嵌入式系统的主流程最后都进入一个死循环,怎样用C语言实现一个死循环?,.6,Quiz 2,while().和do.whi
2、le()有什么区别?,.7,Quiz 3,用变量a给出下列定义: 一个整型数 一个指向整型数的指针 一个有10个整型数的的数组 一个有10个指针的数组,该指针是指向一个整型数的,.8,Quiz 4,关键字static的作用是什么?,.9,Quiz 5,关键字const的作用是什么?,.10,Quiz 6,定义一个标准宏MIN ,这个宏输入两个参数并返回较小的一个。,.11,Quiz 7,嵌入式系统中经常要对变量或寄存器进行位操作。给定一个int型变量a,写两段代码,第一个将a的bit 3置为1,第二个将a的bit 3置为0。以上两个操作中,要保持其它位不变。,.12,Quiz 8,嵌入式系统具
3、有经常去直接访问物理地址的特点。在某工程中,要求设置一绝对地址为0 x5a00 的整型变量的值为0 xaa55。写代码去完成这一任务。,.13,Quiz 9,下面这段代码的输出是什么? void foo(void) unsigned int a = 6; int b = -20; (a+b 6) ? puts(6) : puts(6); ,.14,Quiz 10,请评论下面一段程序代码: void test() char string10; char *str = “0123456789”; strcpy(string,str); ,.15,Quiz 11,请评论下面一段程序代码: void
4、GetMemory(char *p) p = (char *)malloc(0 x20); void Test(void) char *str = NULL; GetMemory(str); strcpy(str,”Hello World!”); printf(str); ,.16,Quiz 12,中断是嵌入式系统的重要组成部分。请评论下面一段中断服务子程序代码:_interrupt double compute_area (double radius) double area = PI * radius * radius; printf(nArea = %f, area); return a
5、rea; ,.17,Answer!,.18,Quiz 1 Answer,while(1).,.19,Quiz 2 Answer,while().为入口条件循环,即在每次执行循环之前先检查判断条件;do.while()为退出条件循环,即在执行循环之后再检查判断条件。,.20,Quiz 3 Answer,a) int a; b) int *a; c) int a10; d) int *a10;,.21,Quiz 4 Answer,在C 语言中,关键字static 有三个明显的作用: 1) 在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被
6、声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。,.22,Quiz 5 Answer,const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 const常量与#define常量:前者有数据类型,后者只是字符替换(而且可能产生意料不到的错误),所以编译器可以对前者进行安全性检查。,.23,Quiz 6 Answer,#define MIN(A,B)
7、 (A) = (B) ? (A) : (B) #define宏的副作用,下面的代码执行后会发生什么事: least = MIN(*p+, b);,.24,Quiz 7 Answer,const int BIT3 = 0 x01 2;,左移,右移,.59,C语言复习,1)循环与分支 2)作用域与存储类 3)内存与指针 4)位操作 5)预编译处理,.60,预编译处理,C编译系统在对程序进行编译之前,先进行预处理。C提供的预处理功能主要有以下三种: 宏定义 文件包含 条件编译,.61,预编译处理,1)宏定义 类对象宏 例:#define STX 0 x02 类函数宏 例:#define SQUARE
8、(x) (x)*(x) 几点说明: a.宏定义不是C语句,不在行末加分号; b.宏名有效范围为从定义处到本源文件结束; c.在宏定义时,可以引用已经定义的宏名; d.宏替换不占运行时间,只占编译时间;,.62,预编译处理,2)文件包含:#include 预处理器发现#include后,就会寻找后跟的这个文件并把这个文件的内容复制到当前位置替换#include指令; 使用#include指令的一些例子:,.63,预编译处理,3)条件编译 条件编译指不对整个程序编译,而是编译满足条件的那部分。条件编译有以下几种形式: a. #ifdef 标识符 程序段1; #else 程序段2; #endif 它
9、的作用:当标识符在前面已经定义过,则对程序段1进行编译,否则对程序段2进行编译。,.64,预编译处理,b. #ifndef 标识符 程序段1; #else 程序段2; #endif 它的作用和#ifdef相反,当标识符之前没被定义过,则对程序段1进行编译,否则就对程序段2进行编译。,.65,预编译处理,c. #if 表达式 程序段1; #else 程序段2; #endif 它的作用:当表达式的值为真时,对程序段1进行编译,都则就对程序段2进行编译;,.66,预编译处理,举例,下面是某工程中.h文件中的一段程序,请说明#ifndef/#define/#endif结构的作用。 #ifndef DE
10、F_H #define DEF_H #include #include “graphics.h” . #endif,防止头文件被重复引用,.67,编程规范,.68,编程规范,1)规范的作用 改善代码质量 提高开发速度 增进团队精神 养成良好习惯,.69,编程规范,2)编程规范 养成良好的编程习惯,.70,开发高效程序的技巧,.71,开发高效程序的技巧,1)ARM编程中局部变量的使用 举例,请看一面一段程序: int checksum(int *data) char i; . for(i=0;i NUM) currentFocus = 0; LcdDisplay(menucurrentFocus.text); break; ,.79,开发高效程序的技巧,5)Bug的修正 别急着改,想想,再想想,想清楚了再动手; 考虑所做的修改是否对系统造成新的影响; 考虑是否对全局数据结构或其他人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅客服务中公共关系的有效应用在广东机场
- 临床研究项目风险评估报告
- 护理与公共卫生事件应对
- 大专护士职业规划模板
- 2026年中国太空旅游行业投资方向及市场空间预测报告(智研咨询发布)
- 医院公共卫生风险管理与控制
- 2025年灌木林碳汇计量方法探讨
- 零售业连锁店运营部副经理的职责与要求
- 乐器及音响设备采购经理的面试技巧
- 基于法律保护的智慧化电子医学影相服务平台建设研究
- 2024-2030年中国粉尘检测仪行业未来发展趋势及前景调研分析报告
- 2024年高考数学试卷(理科)(全国甲卷)【含解析】
- 济州岛旅游模板
- 取水许可管理办法变更申请书(空表)
- 2024中国中信金融资产管理股份有限公司广西分公司招聘笔试冲刺题(带答案解析)
- 鱼类性别控制技术研究进展专题培训课件
- 旧桥拆除专项施工方案
- GB/T 9978.2-2019建筑构件耐火试验方法第2部分:耐火试验试件受火作用均匀性的测量指南
- GB/T 17711-1999钇钡铜氧(123相)超导薄膜临界温度Tc的直流电阻试验方法
- 建设项目办理用地预审与选址意见书技术方案
- 研究生学术道德与学术规范课件
评论
0/150
提交评论