目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码
目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码
前言
本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性、对未定义行为的处理以及一些高级应用;在此基础上,介绍了防御性编程的概念,提出了编程过程中就应该防范于未然的多种措施;提出了测试对编写优质嵌入式程序的重要作用以及常用测试方法;最后,本文试图以更高的层次看待编程,讨论一些通用的编程思想。
1.、简介
市面上介绍C语言以及编程方法的书数目繁多,但对如何编写优质嵌入式C程序却鲜有介绍,特别是对应用于单片机、ARM7、Cortex-M3这类微控制器上的优质C程序编写方法几乎是个空白。本文面向的,正是使用单片机、ARM7、Cortex-M3这类微控制器的底层编程人员。
编写优质嵌入式C程序绝非易事,它跟设计者的思维和经验积累关系密切。嵌入式C程序员不仅需要熟知硬件的特性、硬件的缺陷等,更要深入一门语言编程,不浮于表面。为了更方便的操作硬件,还需要对编译器进行深入的了解。
本文将从语言特性、编译器、防御性编程、测试和编程思想这几个方面来讨论如何编写优质嵌入式C程序。与很多杂志、书籍不同,本文提供大量真实实例、代码段和参考书目,不仅介绍应该做什么,还重点介绍如何做、以及为什么这样做。编写优质嵌入式C程序涉及面十分广,需要程序员长时间的经验积累,本文希望能缩短这一过程。
2、C语言特性
语言是编程的基石,C语言诡异且有种种陷阱和缺陷,需要程序员多年历练才能达到较为完善的地步。虽
目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码相关推荐
- C语言干货分享|更高层次编写嵌入式C代码
摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理:分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性.对未定义行为的处理以及一些高级应 ...
- 20210725整理的比较全面的C语言入门笔记!
https://www.eet-china.com/mp/a65253.html 整理的比较全面的C语言入门笔记! 一口Linux 2021-07-25 10:24 277浏览3评论1点赞 C语言一经 ...
- 史上最全面的python学生管理系统教程(二)
目录 序言 sqlite使用教程 python sqlite使用教程 数据库构造 学生信息表结构: 教师信息表结构: 课程成绩表结构: 教师添加课程: 学生表连接课程成绩表: 数据库语句了解 sqli ...
- java byte char io流_一文带你看懂JAVA IO流,史上最全面的IO教学
原标题:一文带你看懂JAVA IO流,史上最全面的IO教学 一.IO流是什么 惯例引用百科的回答 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符 ...
- [不看后悔啊!]史上最为全面的Autocad施工图视频教程 看完就能成为装修设计师 http://www.51zxw.net/study.asp?vip=1573837
[不看后悔啊!]史上最为全面的Autocad施工图视频教程 看完就能成为装修设计师 http://www.51zxw.net/study.asp?vip=1573837 沈阳设计:http://hom ...
- 史上最全面的 ADB命令 及用法 大全
史上最全面的 ADB命令 及用法 大全 ADB Usage Complete / ADB 用法大全 https://mazhuang.org/awesome-adb/ ADB,即 Android De ...
- 最全面的Java面试题-----是你更好的掌握java知识
最全面的Java面试题-----是你更好的掌握java知识 目录 l 概念题--- 1 一. JAVA基础--- 1 1) 面向对象的特征--- 1 2) 什 ...
- 全网最全面的python的讲解,讲的无可挑剔《记得收藏》
全网最全面的python的讲解,讲的无可挑剔<记得收藏> 目录 1.简介 Pyhon中如何文件拷贝 Python数学库及其应用 Python异常处理机制 ETC turtle库的常用指令 ...
- 不能将iMovie 剪辑安装在“未命名”上,因为需要macOS v10.15.6或更高版本。
目录 问题 解决 问题 从App Store上下载一个应用时,遇到了这个报错: 不能将iMovie 剪辑安装在"未命名"上,因为需要macOS v10.15.6或更高版本. 提示框 ...
最新文章
- Winform中实现新增和更新共用一个页面的示例流程
- 两个主机mtu不相同_案例详解:MTU不一致导致主机和RAC不断重启
- 庄导就业指导2020.4.6
- Spring源码研究之how is returned hello string converted to jsp page
- ubuntu的MySQL远程数据库连接问题查找
- SQL Sever 刪除重複數據只剩一條
- 简单介绍WaitForSingleObject / WaitForMultipleObjects
- 黑白块游戏java代码_用java做的一个小游戏—黑白反斗棋(适合菜鸟)
- 【Alpha】Daily Scrum Meeting——Day2
- 左手用R右手Python系列之——表格数据抓取之道
- 智能优化算法:原子搜索优化算法 -附代码
- 操作系统实验——进程通信
- 红队web打点信息收集
- Android-模块化-面向接口编程深度解析,值得收藏
- web前端数据表格有合并项的一种简单实现方法
- uni-app做app自定义弹窗实现
- 计算机应用中dss是,在计算机应用中,英文缩写“DSS”表示( )。
- [随笔]明年,你还爱我么..(网络转载)
- AngularJS 和 Electron 构建桌面应用
- python实现链表(一)
热门文章
- STM32中事件标志位与中断标志位
- 乌班图五子棋c语言,毕业设计(论文)-网络五子棋设计与实现.doc
- SDHK_Tool.Dynamic.SD_Motor_Angle 角度旋转电机
- H5页面制作平台源码 微场景制作软件 含搭建部署教程
- Halcon视觉软件库介绍
- 适合中国学生的AP课程有哪些?内附课程详解
- 总结在使用vue-photo-preview---图片查看大图插件,点击图片无法显示预览等问题
- 基于51单片机的无线遥控小车
- 使用传统算法进行红色印章区域的提取
- 华为vr2计算机连接线代替品,分体式设计的VR一体机:独特连接方式让华为VR2眼镜与众不同...