欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 56、【OS】【Nuttx】编码规范解读(四)

56、【OS】【Nuttx】编码规范解读(四)

2025/5/6 4:45:55 来源:https://blog.csdn.net/nobigdeal00/article/details/147659605  浏览:    关键词:56、【OS】【Nuttx】编码规范解读(四)

背景

接之前 blog
53、【OS】【Nuttx】编码规范解读(一)
54、【OS】【Nuttx】编码规范解读(二)
55、【OS】【Nuttx】编码规范解读(三)
分析了行宽格式,注释要求,花括号风格等,下面继续来分析

Nuttx 编码规范

花括号缩进例外

在这里插入图片描述

涉及到结构体(structure)、枚举(enumeration)、联合体(union)时,花括号不需要额外的缩进(对于 GNU 风格而言),举例如下:
在这里插入图片描述
在这里插入图片描述

缩进

在这里插入图片描述

Nuttx 项目中缩进的使用和 GNU 编码规范 类似,但也有点细小的差别

  • 缩进的基本单位是2个空格
  • 每一级的缩进都比前一级多出两个空格
  • 不要使用TAB字符进行缩进,避免不同编辑器对 TAB 宽度解释不一致(如果使用,记得把编辑器的缩进调成 两个空格)

举例如下:
在这里插入图片描述

Tab 使用说明

在这里插入图片描述
虽然源文件和头文件禁止使用 TAB 进行缩进,但在如Makefile、汇编语言源文件、Kconfig文件和一些脚本文件中,允许使用 TAB 进行缩进,TAB 设置为 4 个空格

花括号对齐

在这里插入图片描述
花括号必须单独占一行,每级需要缩进两个空格,而且花括号本身也要缩进两个空格(GNU风格),这里就有个有趣的现象:

  • 所有C语句所在列为 4*n + 2(比如 2, 6, 10…)
  • 左右花括号所在列为 4*n(比如 4, 8, 12…)
  • 上述特性意味着在同一缩进级别,代码行和对应的左右花括号在不同的固定列上对齐

预处理指令的缩进

在这里插入图片描述

  • 预处理器指令的关键字(#)从第 1 列开始
  • 预处理器指令也要遵循一般的缩进规则(即每级缩进2个空格),从关键字(#)后面的内容开始遵循这个缩进原则

举例如下
在这里插入图片描述
例外:每个头文件在开头包含了幂等性定义,这种条件编译不会引起任何缩进的变化,举例如下
在这里插入图片描述

圆括号

在这里插入图片描述
圆括号需遵循以下规则:

  • 关键字后留空格:使用C语言关键字(如 if, for, switch, while, do, return 等)时,不要将左括号(直接跟在关键字后面,关键字和左括号之间要有一个空格
  • 函数名与参数列表之间不要有空格
  • 右括号前不要加空格
  • 返回值不要加括号,除非是为了强制运算顺序

示例如下:
在这里插入图片描述
Nuttx 对圆括号的态度:
在这里插入图片描述

  • 有些开发人员对运算符优先级不太有把握,因此喜欢在表达式中大量圆括号来明确指定运算顺序,而这些括号实际上不会影响运算顺序
  • 虽然这样可以防止误解运算符优先级,但也让代码看起来很丑

基于以上考虑,Nuttx 不推荐为了强制运算顺序而使用不必要的括号,但也没有特定要求必须或禁止使用括号,而是建议开发人员实事求是,视具体情况来决定是否使用括号

数据和类型定义

定义和声明独占一行

示例如下
在这里插入图片描述

全局变量

在这里插入图片描述

  • 全局变量是在函数外定义的变量,作用域可以跨越多个文件或仅限于单个文件
  • 全局符号前如果加上 static 关键字,则该变量的作用域仅限于定义它的文件,也就是私有全局符号
  • 没有 static 修饰符的全局变量可以在不同的文件间共享,这类符号被称为公共全局变量

编码规范:

  • 名字要简短,避免过于冗长的变量名,比如 g_filelen 就比 g_lengthoffile 要好
  • 全局变量名要以前缀 g_ 开头,以指示其为全局变量
  • 如果全局变量属于某个特定模块,要在前缀中包含该模块名,比如 xyz 模块的全局变量格式为g_xyz
  • 全局变量名全部使用小写字母(不用驼峰写法)
  • 尽量避免在变量名中使用下划线作为分隔符,以减少下划线的使用
  • 对于较长的变量名可能需要下划线分割来提高可读性,但总体上变量名还是要简短
  • 尽量把全局变量封装在结构体内,以减少命名冲突
  • 限制全局变量的使用,能用私有的就用私有,对外暴露用接口形式,面向接口编程

举例如下:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词