当前位置: 首页 > news >正文

嵌入式C语言编程技巧

基础语法编程技巧

变量

(1)变量名需见名知意,用英文单词命名,尽可能避免出现 a b 等单一字母的变量

(2)变量在定义同时进行初始化,防止乱码数据

(3)变量序号尽可能用英语单词,例如:count_one、size_two 等

数组

(1)数组名同变量名,见名知意。

(2)数组在定义后进行“清空”处理,防止数组中出现未知数据

(3)反复使用的数组记得在使用前清除上一次的数据,memset,防止数据残留

判断语句

(1)判断语句注意关系运算符号,特别是 “==” 和 “=”

(2)判断语句的大括号尽量对齐书写,关键字单独一行,便于后期代码改错

(3)即使判断执行语句只有一条,也要记得写大括号

循环语句

(1)大括号格式同判断语句

(2)在写while 和 do……while 语句时,别忘了“i++”,否则会造成死循环

(3)在编码阶段,做好每次循环的 debug 调试语句,便于查看每次循环情况

(4)在写循环语句前,可以将分析过程用注释的方式写在循环体之上,便于完善思路

函数

(1)函数名同变量名,见名知意。

(2)函数结构时刻注意 return 语句

(3)多文件编程时,如果函数只用于本文将,用static进行修饰,防止多文件中函数重名。

(4)函数功能遵循封装思想,做好“单一职责”控制,便于代码复用

指针

(1)指针变量在定义是初始为 NULL 防止野指针

(2)指针变量名往往时普通变量名后加 _p 进行标识,例:count_p,便于观察“指针追踪”情况

(3)使用free 清空堆区空间后,记得将指针初始化为 NULL 防止野指针

 点击获取1V1嵌入式学习规划,现在还送100G精选学习资料。点击领取

程序版式编程技巧

(1)空行,通过空行来进行代码段的划分,便于代码分块管理

(2)空格,运算符前后,连续参数等,可以用空格隔开,便于纠正错误

(3)注释,函数前,逻辑代码前,可以写适当的注释来进行标明

 

(4)长句拆分,过长的代码应该适当进行拆分,便于查看

 

for (i = 0; i < 8; i++)

{

SetData((data >> i) & 0x1);

SetClockHigh();

for (j = 0; j < 5; j++);

SetClockLow();

for (j = 0; j < 5; j++);

}

相关文章:

  • 技术分享 | App常见bug解析
  • flink scala版本报错JavaConversions$.deprecated$u0020propertiesAsScalaMap
  • 基于python的学生成绩管理系统毕业设计源码071143
  • 06_sentinel—分布式系统遇到的问题
  • 食品接触材料塑料中的异氰聚酯测试
  • .net core 控制台应用程序读取配置文件app.config
  • 微信小程序---验证码倒计时
  • Elasticsearch:运用 Python 实现在 Elasticsearch 上的向量搜索
  • 树的深度优先遍历与广度优先遍历
  • 大津法(最大类间方差法OTSU)
  • 搭建ELK分布式日志系统
  • 电子竞价是如何运作的?
  • TypeScript 学习之路 - 基础篇
  • 将路径中的“\\”换成“/”的方法
  • (一)Dubbo快速入门、介绍、使用
  • 4个实用的微服务测试策略
  • Electron入门介绍
  • extract-text-webpack-plugin用法
  • Fastjson的基本使用方法大全
  • HTML中设置input等文本框为不可操作
  • linux学习笔记
  • MySQL数据库运维之数据恢复
  • Python socket服务器端、客户端传送信息
  • Python进阶细节
  • Sass 快速入门教程
  • springboot_database项目介绍
  • 闭包,sync使用细节
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 浏览器缓存机制分析
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 通过git安装npm私有模块
  • 系统认识JavaScript正则表达式
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​插件化DPI在商用WIFI中的价值
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # centos7下FFmpeg环境部署记录
  • (C#)一个最简单的链表类
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (pojstep1.3.1)1017(构造法模拟)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)c++ std::pair 与 std::make
  • (转)fock函数详解
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • ??eclipse的安装配置问题!??
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [2669]2-2 Time类的定义
  • [android] 看博客学习hashCode()和equals()
  • [android] 切换界面的通用处理