- 34
- 0
- 约5.26万字
- 约 65页
- 2021-11-19 发布于天津
- 举报
嵌入式系统程序可移植性设计及性能优化之一
――――宏定义设计
Sailor_forever sailing_9806@163.com 转载请注明
/sailor_8318/archive/2008/07/16/2663254.aspx
【摘要】本节介绍了嵌入式系统程序设计中采用宏定义进行常量定义的必要性。 说明了宏常
量定义的基本规则以及如何采用依赖关系定义宏常量来保证其可移植性和裁减性。 最后介绍
了如何利用宏定义实现掩码偏移量等来高效的进行位操作。
【关键词】嵌入式,可移植性,宏定义,依赖关系,掩码,偏移量,位操作
1 宏定义设计 ... - 1 -
1.1 为何要采用宏定义? ... - 1 -
1.2 宏定义的基本规则 ... - 1 -
1.3 依赖关系定义宏改善移植性 ... - 1 -
1.4 通过偏移量和掩码进行位操作 ... - 2 -
1 宏定义设计
1.1 为何要采用宏定义?
在程序设计过程中, 对于经常使用的一些常量, 如果将它直接写到程序中去, 一旦常量的数
值发生变化, 就必须逐个找出程序中所有的常量, 并逐一进行修改, 这样必然会降低程序的
可维护性。 因此, 应尽量通过预处理命令方式将常量定义为特定的字符, 这样常量就有了统
一的表现形式, 不会出现输入错误导致的不一致性。 另外宏常量意义明确, 大大改善了代码
的可读性。
只读的变量也可以实现上述宏常量所带来的可移植性、 可靠性及可读性等特点, 但其要占据
存储空间, 需要访问内存, 相比宏常量的立即数寻址而言效率要低。 在 C++中提倡用 const
只读变量来定义常量,是因为这样可以提供更严格的类型安全检查。但由于 C 中 const 只读
变量不能用于某些场合,因此在嵌入式 C 中仍多数采用宏来定义常量。
1.2 宏定义的基本规则
下面以一个实例来说明宏定义的基本规则,如用预处理指令 #define 声明一个常量,用以表
明 1 年中有多少秒,不考虑润年
#define C_SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
a) 命名风格,为了与普通变量区分开来,宏定义通常全部大写,多个单元之间用下
划线隔开;
b) 整个表达式应括起来,若有参数则应将每个参数都括起来,防止替换扩展后可能
带来的异常问题;
c) 常量表达式先合并后再替换。预处理器将为你计算常量表达式的值,因此,直接
写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有运行性能代价
的。
d) 为常量添加类型信息。宏的不足之一在于缺乏类型安全检查,人为的提供类型信
息可以有效检查出此类问题。 UL 告诉编译器这个常量是无符号长整型数,因此将其赋值给
u16 型变量会出现告警。
1.3 依赖关系定义宏改善移植性
嵌入式系统程序的最大特点是硬件平台的多变性, 因此需要根据具体的应用情况更改大量配
置,而这些配置基本都是由宏定义来实现的, 放在特定的头文件中,与其他的代码隔离,在
一定程度上改善了代码的可移植性。 但有些时候, 多个宏定义有严重的依赖关系, 增减某个
宏会引起其他定义的更改,如何定义这些宏对嵌入式程序的可移植性有很大影响。
A
常量分别定义
#define C_DD_MODULE_ID_AOM (0 /* AOM 模块 ID */
#define C_DD_MODULE_ID_RRCM (0
您可能关注的文档
- 福田区股份合作公司城市更新项目引入合作开发主体工作规程.pdf
- 离散信道容量迭代实现.pdf
- 私募股权投资基金投资项目来源与评估.pdf
- 科学技术的社会功能.pdf
- 科室质控活动记录册.pdf
- 科技创新项目立项建议书.pdf
- 科技金融支撑体系的建立与对策.pdf
- 科普内容数据汇聚与使用管理办法.pdf
- 科研产业化流程.pdf
- 移动机器人路径规划综述.pdf
- 2025年北京市门头沟区中考一模英语试题.docx
- 2025年北京市门头沟区中考二模英语试题.docx
- 2025年北京市丰台区中考二模英语试题.docx
- 2025年中考英语考前冲刺模拟卷 (北京专用) 解析卷.docx
- 2025年中考英语考前冲刺模拟卷 (北京专用) 原卷.docx
- 2025年肩颈按摩仪行业社媒趋势数据分析.docx
- 2025年人身险行业信用回顾与2026年展望.docx
- 合同法买卖合同培训课件.ppt
- 2025年全球食物系统与SDG研究报告-食物供给、食者健康、生态平衡的整体治理.docx
- 2025下半年四川乐山市川投峨眉铁合金(集团)有限责任公司对考前自测高频考点模拟试题最新.docx
最近下载
- 制鞋技术之成型后段技术培训教材01.pdf VIP
- 磁共振温度图像重建方法、装置、设备、介质及程序产品.pdf VIP
- 金田JTE 388系列变频器使用手册.pdf
- 人教版(PEP)2026-2027学年四年级英语下册教学计划(及进度表).docx
- 东北师范大学2021-2022学年第1学期《线性代数》期末考试试卷(A卷)及标准答案.docx
- 新生儿科消防安全知识培训.pptx VIP
- 第五章+中国的地理差异+课件-2023-2024学年八年级地理下学期人教版.pptx VIP
- 第五章+中国的地理差异+第1课时+课件-2023-2024学年八年级地理下学期人教版.pptx VIP
- 【地理】中国的地理差异第1课时课件-2025-2026学年人教版地理八年级下册.pptx VIP
- 第五章+中国的地理差异+第1课时课件2022-2023学年人教版地理八年级下册.pptx VIP
原创力文档

文档评论(0)