【08】单片机变量命名规范指南

【08】单片机变量命名规范指南

(基于单片机开发实践,适用于 C/C++ 语言)

📌 核心原则

1️⃣ 清晰性:通过前缀、后缀、大小写区分变量类型、作用域、数据宽度等。
2️⃣ 一致性:同一项目内规则统一,避免混用不同命名风格。
3️⃣ 可读性:命名需反映变量用途,避免单字母(除循环变量)。


📝 1. 普通变量命名规范

🔹 类型前缀
前缀含义示例
uint8_t无符号8位局部变量uint8_tData
uint16_t无符号16位局部变量uint16_tCount
uint32_t无符号32位局部变量uint32_tTime
🔹 作用域标识
前缀含义示例
无前缀局部变量(默认)uint8_tTemp
G全局变量Guint8_tStatus
ES全局静态变量ESuint16_tCounter
S局部静态变量Suint32_tTimer

📝 2. 常量命名规范

🔹 常量前缀
前缀含义示例
C所有常量(全局/局部)Cuint8_tMaxValue = 255
C结合类型前缀(如 Cuint8_t, Cuint16_tconst unsigned int Cuint16_tLimit = 65535;

📝 3. 循环变量命名规范

  • 例外规则:循环变量允许使用单字母命名(如 i, j, k),无需遵循其他命名规范。
  • 示例
    for (unsigned char i = 0; i < 10; i++) {  
        // 循环体  
    }  
    

📝 4. 数组命名规范

🔹 用途后缀
后缀用途示例
Buffer普通数据缓冲区Guint8_tDataBuffer[10]
String字符串数组Guint8_tMessageString[50]
Table查找表/映射表const Cuint8_tLookupTable[] = {0x3F, ...};
Message存储结构化信息的数组uint8_tConfigMessage[16]

📝 5. 指针命名规范

🔹 指针前缀
前缀含义示例
p指针变量unsigned char *pGuint8_tData;
pC常量指针(指向常量)const unsigned int *pCuint16_tValue;
🔹 作用域与类型
前缀组合含义示例
pGuint8_t全局8位变量指针unsigned char *pGuint8_tArray;
pSuint16_t局部静态16位变量指针static uint16_t *pSuint16_tPtr;

📝 6. 结构体命名规范

🔹 结构体前缀
前缀含义示例
t结构体变量/指针struct StructData tConfig;
Gt全局结构体变量GtSensorData;
St局部静态结构体变量static struct Data StTemp;
pt结构体指针struct Struct *ptData;

📝 7. 宏常量命名规范

  • 全大写字母,单词间用下划线分隔。
  • 示例
    #define MAX_RETRIES 3  
    #define EEPROM_ADDR 0x50  
    

📝 8. 通用命名规则

🔹 单词分隔
  • 驼峰式命名:多个单词首字母大写,如 uint8_tGetFileLength
  • 下划线分隔:专业术语或难以断句的单词间用 _,如 Guint8_tESD_Flag
🔹 禁用规则
  • 避免单字母命名(除循环变量)。
  • 避免缩写(如 cntcount)。

🌟 总结

本规范通过 前缀+后缀+大小写 的组合,实现以下目标:
1️⃣ 类型可见uint8_t/uint16_t/uint32_t 明确数据宽度。
2️⃣ 作用域清晰G/ES/S 区分全局、静态变量。
3️⃣ 用途明确Buffer/Table/String 标识数组用途。
4️⃣ 可读性优先:宏常量全大写,结构体前缀统一。

实践建议

  • 新项目初期严格遵循规范,后期根据需求微调。
  • 单片机开发中需特别注意 b/h/l 类型修饰符(如 Keil C51)。
  • 代码注释需与命名规范互补,避免过度依赖注释。

💡 终极目标:让代码成为“自文档”,无需额外说明即可理解变量用途与约束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984520.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Beanshell前置处理器对Jmeter的请求body进行加密

这里我们用HmacSHA256来进行加密举例&#xff1a; 步骤&#xff1a; 1.先获取请求参数并对请求参数进行处理&#xff08;处理成String类型&#xff09; //处理请求参数的两种方法&#xff1a; //方法一&#xff1a; //获取请求 Arguments args sampler.getArguments(); //转…

利用paddleocr解决图片旋转问题

由于之前使用easyocr识别图片的时候发现旋转的图片或者倒置的图片效果很差&#xff0c;来利用 cv2.minAreaRect()获取旋转角度&#xff0c;只能解决0-90&#xff0c;对于倒置的图片不能很好解决&#xff0c;因此使用paddleocr中方向分类检测&#xff08;只能返回0&#xff0c;1…

数据结构(蓝桥杯常考点)

数据结构 前言&#xff1a;这个是针对于蓝桥杯竞赛常考的数据结构内容&#xff0c;基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中&#xff0c;时间复杂度不能超过10的7次方&#xff08;1秒&#xff09;到10的8次方&#xff08;2秒&#xff09; 空间限制&#x…

Python 入

Python 入侵交换机 随着网络安全威胁不断增加&#xff0c;对于网络设备的安全防护变得愈发重要。而交换机作为网络中重要的设备之一&#xff0c;也需要加强安全保护。本文将介绍如何利用Python来入侵交换机&#xff0c;并对其进行漏洞扫描和安全检测。 1. Python 入侵交换机原…

自然语言处理:最大期望值算法

介绍 大家好&#xff0c;博主又来给大家分享知识了&#xff0c;今天给大家分享的内容是自然语言处理中的最大期望值算法。那么什么是最大期望值算法呢&#xff1f; 最大期望值算法&#xff0c;英文简称为EM算法&#xff0c;它的核心思想非常巧妙。它把求解模型参数的过程分成…

RAG 常见分块策略全解析:从原理到代码实践(2025 深度版)

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 更多文章可关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 引言 在检索增强生成(RAG)系统中,分块策略是决定系统…

【软件逆向】QQ 连连看小游戏去广告与一键消除实现

目录 一、背景介绍 二、去广告实现 2.1 分析广告加载流程 2.2 逆向分析广告加载逻辑 2.3 去广告方案 三、一键消除外挂实现 3.1 分析游戏逻辑 3.2 编写外挂插件 3.3 注入外挂&#xff1a; 四、一键消除效果展示 五、额外扩展 一、背景介绍 QQ 连连看是一款经典的休闲…

小白学Agent技术[5](Agent框架)

文章目录 Agent框架Single Agent框架BabyAGIAutoGPTHuggingGPTHuggingGPT工作原理说明GPT-EngineerAppAgentOS-Copilot Multi-Agent框架斯坦福虚拟小镇TaskWeaverMetaGPT微软UFOAgentScope现状 常见Agent项目比较概述技术规格和能力实际应用案例开发体验比较ChatChain模式 Agen…

AI写论文提示词指令大全,快速写论文

目录 一、十大学术写作提示词1、研究主题2、研究问题3、论文架构4、学术论证5、文献关键要素6、专业文本可读性转换7、学术语言规范化8、提高语言准确性9、多维度、深层论证10、优化文本结构 二、快速写论文提示词1、确认研究选题2、整理相关资料3、快速完成论文大纲4、整合文献…

电子电气架构 ---常见车规MCU安全启动方案

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

HCIP第二讲作业

一、连接拓扑图 二、配置要求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中的HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分&#xff0c;PC1可以正常访问3.3.3.0/24网段&#xff0c;但是PC2不允许 3.学校内部路由使用静态路由&#xff0c;R1…

Linux第六讲:进程控制

Linux第六讲&#xff1a;进程控制 1.进程创建1.1回顾fork1.2写时拷贝 2.进程终止2.1exit与_exit 3.进程等待3.1进程等待的方法&#xff08;wait和waitpid&#xff09; 4.进程程序替换4.1自定义shell的编写4.1.1输出命令行提示符4.1.2获取用户输入的命令4.1.3命令行分析4.1.4指令…

BI 工具响应慢?可能是 OLAP 层拖了后腿

在数据驱动决策的时代&#xff0c;BI 已成为企业洞察业务、辅助决策的必备工具。然而&#xff0c;随着数据量激增和分析需求复杂化&#xff0c;BI 系统“卡”、“响应慢”的问题日益突出&#xff0c;严重影响分析效率和用户体验。 本文将深入 BI 性能问题的根源&#xff0c;并…

PPT内视频播放无法播放的原因及解决办法

PPT内视频无法播放&#xff0c;通常是视频编解码的问题。目前我遇到的常见的视频编码格式有H.264&#xff0c;H.265&#xff0c;VP9&#xff0c;AV1这4种。H.264编解码的视频&#xff0c;Windows原生系统可以直接播放&#xff0c;其他的视频编码格式需要安装对应的视频编解码插…

【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…

Navigation的进阶知识与拦截器配置

Navigation的进阶知识与拦截器配置 写的不是很详细&#xff0c;后续有时间会补充&#xff0c;建议参考官方文档食用 1.如何配置路由信息 1.1 创建工程结构 src/main/ets ├── pages │ └── navigation │ ├── views │ │ ├── Mine.ets //…

多模态推理模型相关开源工作

多模态推理模型相关开源工作 1. 训练策略1.1 R1-V① 介绍② 训练流程③ 关键注意点④ 主要问题⑤ 是否可以去掉 KL 约束&#xff1f; 1.2 open-r1-multimodal① 介绍② 代码改进 1.3 VisualThinker-R1-Zero① 研究意义② 训练方法③ 结论④ 代码改进⑤ 其他发现 1.4 Efficient-…

LaTex安装流程(附安装包)LaTex超详细保姆级图文安装教程

文章目录 前言一、LaTex下载二、Texlive 2024安装教程三、Texstudio安装教程 前言 本安装流程将以清晰、易懂的方式&#xff0c;详细的价绍 LaTeX安装教程&#xff0c;助你顺利踏入专业排版的大门 。 一、LaTex下载 LaTeX 是由美国计算机科学家莱斯利・兰伯特&#xff08;Les…

Ultravox:融合whisper+llama实现audio2text交互

Ultravox是由Fixie AI开发的一种创新型多模态大语言模型,专为实时语音交互设计。与传统的语音交互系统不同,Ultravox无需单独的语音识别(ASR)阶段,可以直接理解文本和人类语音,实现更快速、更自然的交互体验。Ultravox v0.5在语音理解基准测试中超越了OpenAI的GPT-4o Realt…

KL散度详解与应用

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…