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

嵌入式C语言编码规范要点

1.函数命名方法

  骆驼命名法(Camel)

  帕斯卡命名法((pascal),也叫大驼峰命名法(Upper Camel Case)

  匈牙利命名法

  下划线命名法(也称为蛇形命名法)

  详述见之前文章:四种编程命名规则介绍

  https://blog.csdn.net/xieliru/article/details/139481164?spm=1001.2014.3001.5501

2.注释

(1)最好符合doxygen样式。

     注释允许使用 (/* comments */) 或 (// comments) 式样。

(2)文件头注释

/** @fileexample.c

 * @brief Example of C implementation file

 * @authorAuthor of creation

 * @dateDate of creation

 * @details This file contains an example layout of C implementation file.

 */

3.缩进和格式化

  行首使用四个空格缩进(或者是tab键,但要确认tab键是4个空格)对齐,其他地方通常使用空格保持对齐,而不是tab。

4.文件及函数长度

  每个文件包含注释或空行的行数不超过2000行。

  每个函数包含注释或空行的行数不超过200行。

  每行内容不超过120个字符。

  

5.宏定义及变量使用

  魔数(数字或字符串) 不得出现在代码中,而是通过宏定义或常量来替代。

  所有的变量在使用之前必须初始化。

    

6.指针使用

  指针在使用之前要检查是否为空,同时如果内存释放了,指针要被设置成NULL。

  函数原型中的指针参数如果不是用于修改就必须声明为指向const的指针。

7.其他

  尽量不使用goto语句和标号。  

  

  宜用括号“()”明确表达式的操作顺序,避免使用默认优先级。

  

  不宜在循环中使用continue和break语句。  

  

  应禁止签名类型与无签名类型之间的隐式转化。

  注:从有符号类型转换为无符号类型会导致符号的丢失;无符号数转换为有符号数时,可能得到一个负值

  

  不应对有符号数进行位运算。

  数组的索引值不应越界。

   

  不应对浮点类型变量使用“=-”和“!=”作比较

相关文章:

  • QT中为程序加入超级管理员权限
  • C++习题精选(4)—— 栈
  • Mybatis05-一对多和多对一处理
  • 最大二叉树-力扣
  • 从零实现ChatGPT:第四章在无标签数据上预训练
  • 手写节流防抖函数
  • 多个线程多个锁:如何确保线程安全和避免竞争条件
  • Python pandas openpyxl excel合并单元格,设置边框,背景色
  • 在 Linux 系统上安装 Android NDK
  • 呼叫中心系统的国产化替代方案
  • 【Flutter】 TextField限制长度时, 第三方手写输入法、ios原始拼音输入法输入被吞问题
  • swift微调牧歌数据电商多模态大语言模型
  • 【Spring6】1-12章源码级深入详解 IoC
  • 网络安全(补充)
  • 外卖抢单神器
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2019.2.20 c++ 知识梳理
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Github访问慢解决办法
  • JavaScript 一些 DOM 的知识点
  • java取消线程实例
  • Less 日常用法
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python利用正则抓取网页内容保存到本地
  • react-native 安卓真机环境搭建
  • React系列之 Redux 架构模式
  • Spring框架之我见(三)——IOC、AOP
  • VUE es6技巧写法(持续更新中~~~)
  • windows下如何用phpstorm同步测试服务器
  • XForms - 更强大的Form
  • 高度不固定时垂直居中
  • 基于 Babel 的 npm 包最小化设置
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 实习面试笔记
  • 在weex里面使用chart图表
  • ​渐进式Web应用PWA的未来
  • #Java第九次作业--输入输出流和文件操作
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)(3.5) 遥测无线电区域条例
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (四)鸿鹄云架构一服务注册中心
  • (转)Linux下编译安装log4cxx
  • (转载)OpenStack Hacker养成指南
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .net FrameWork简介,数组,枚举
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net分布式压力测试工具(Beetle.DT)