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

62、【OS】【Nuttx】编码规范解读(十)

背景

接之前 blog
53、【OS】【Nuttx】编码规范解读(一)
54、【OS】【Nuttx】编码规范解读(二)
55、【OS】【Nuttx】编码规范解读(三)
56、【OS】【Nuttx】编码规范解读(四)
57、【OS】【Nuttx】编码规范解读(五)
58、【OS】【Nuttx】编码规范解读(六)
59、【OS】【Nuttx】编码规范解读(七)
60、【OS】【Nuttx】编码规范解读(八)
61、【OS】【Nuttx】编码规范解读(九)
分析了行宽格式,注释要求,花(圆)括号风格,全局变量,结构体,宏定义,指针,结构体,switch,while 语句等,下面继续分析

Nuttx 编码规范

do while 语句

在这里插入图片描述

  • do 和 while 关键字各自单独占一行
  • 跟在 do 后的语句必须始终用大括号包裹,即使只有一条语句或没有语句
  • while 关键字与条件在同一行并用一个空格隔开
  • 结束的 while 语句后要跟一个空白行,除非嵌套在另一个复合语句内

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

goto 语句

在这里插入图片描述

  • 要限制使用 goto 语句,通常 goto 语句是被禁止使用的,除非用于处理复杂嵌套逻辑中的错误条件。在这种场景下,简单的 goto 可以显著提高代码的可读性,简化复杂度
  • 所有标签必须全部小写,允许使用下划线字符 _ 来分隔较长的标签名
  • 常见的错误退出标签通常命名为 errout,如果需要撤销之前分配的资源或执行其他清理操作,可能需要多个不同的错误标签,比如 errout_with_allocation、errout_with_openfile 等
  • 标签不要缩进,必须始终从第一列开始

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

C++ 规范

在这里插入图片描述

  • Nuttx 在 C++ 上没有一个完整的标准规范,这里只给出一些基本指导原则
  • 目前没有要求遵循特定的 C++ 版本,但考虑兼容性,鼓励遵循旧的,C++11之前的规范
  • C++源文件用 .cxx 扩展名,头文件用 .hxx 扩展名
  • 命名要用驼峰风格,不推荐用下划线字符 _
  • 局部变量、方法名和函数名必须以小写字母开头,比如 myLocalVariable,myMethod

在这里插入图片描述
命名空间、全局变量、类、结构体、模板和枚举名称必须以大写字母开头,并根据其类型添加特定前缀

  • 命名空间:以大写字母开头,如 MyNamespace
  • 全局变量:以大写字母 G 开头,如 GMyGlobalVariable,不允许使用 g_ 前缀(这是 C 风格)
  • 实现类:以大写字母 C 开头,如 CMyClass
  • 纯虚基类:以大写字母 I 开头,如 IMyInterface
  • 模板类:以大写字母 T 开头,如 TMyTemplate
  • typedef 定义的类型名:也以大写字母 T 开头,需要额外的命名标志,避免与模板类混淆,不要用后缀 _t(这是 C 风格)
  • 结构体名:以大写字母 S 开头,如 SMyStructure,不要用后缀 _s(这是 C 风格)
  • 枚举名:以大写字母 E 开头,如 EMyEnumeration,不使用后缀 _e(这是 C 风格)

Pre-Commit 工具介绍

在这里插入图片描述
pre-commit 是个第三方 python 工具,可以用来自动检查 Nuttx 代码风格问题

安装

在这里插入图片描述
通常可以直接使用 pip 命令来安装pre-commit工具

pip install pre-commit

安装完成后,进入Nuttx 目录,运行以下命令来设置 pre-commit 钩子

pre-commit install

使用

在这里插入图片描述
当尝试提交代码更改时,pre-commit工具会自动运行配置好的一系列检查,所有检查都通过后,提交可以继续进行;如果有失败项,则提交会失败

使用效果如下
在这里插入图片描述
如果不想每次提交时才检查,可以用下面命令进行手动检查,比如要检查 drivers/i2c/* 的文件

pre-commit run --files drivers/i2c/*

钩子

在这里插入图片描述
下面配置项在配置文件 .pre-commit-config.yaml 须被启用

  • end-of-file-fixer:确保文件以一个空行结束
  • trailing-whitespace:查找并移除行尾多余的空白字符
  • check-added-large-files:防止过大的文件被提交到仓库中
  • cmake-format:检查 CMakeLists 文件格式是否符合规范
  • nxstyle:检查代码是否符合 Nuttx 编码规范,通过运行 checkpatch.sh 脚本实现

至此,Nuttx 编码规范分析完毕

相关文章:

  • VC++和python从哪一年开始支持split(字符串)非单个字符
  • 消防应急装备管理:打造消防营区智能仓储
  • 钩子函数的作用(register_hook)
  • 2025-05-28 Python深度学习8——优化器
  • 破能所,入不二
  • GNU AS汇编器的.align对齐
  • 端午节互动网站
  • 力扣 215 .数组中的第K个最大元素
  • AMBA-AHB总线是怎么不依赖三态总线的?
  • 11.14 LangGraph检查点系统实战:AI Agent会话恢复率提升287%的企业级方案
  • 【网络编程】十八、Reactor模式
  • 2025年05月28日Github流行趋势
  • 农业光合参数反演专栏
  • kubernate解决 “cni0“ already has an IP address different from 10.244.0.1/24问题
  • Caddy如何在测试环境中使用IP地址配置HTTPS服务
  • bug: uniCloud 查询数组字段失败
  • HTTP Accept简介
  • linux系统(centos7为例)将jar配置成服务操作教程
  • 浏览器之禁止打开控制台【F12】
  • 网页前端开发(基础进阶1)
  • 移动端网页设计图片/seo顾问阿亮
  • 怎么在欧美做网站推广/福州seo网站管理
  • 做网站seo的步骤/如何免费自己创建网站
  • 淘宝上做网站的客服聊天技巧/怎么做网络营销推广
  • 建网站北京/seo中文
  • 做网站最大的公司/谷歌google官网下载