C99变量命名之嵌入式改良匈牙利命名
2026/6/30 1:16:18 网站建设 项目流程

标识符命名清晰,简明,有意义,使用完整英文单词,
禁止使用单个字符,除了循环计数器外和汉语拼音.
除头文件保护宏外,不使用下划线 _ 作为标识符的开头或结尾
变量采用小写字母加下划线组合
局部循环变量允许使用i、j、k 等单个字符;

uint32_t current_power; /* 符合规范 */
uint32_t audio_state; /* 符合规范 */
uint32_t sbsbsbb; /* 不符合规范 */
uint32_t wen_du; /* 不符合规范(拼音) */

核心逻辑: 前缀=变量属性+类型,主体=业务含义

前缀_变量命名_说明列表
前缀全称含义事例
g_global全局变量g_sys_clk
s_static文件静态局部变量s_cache_cnt
m_memberC++ 类成员变量m_dev_handle
ststruct结构体实体st_task_param
pstptr+struct结构体指针pst_task_param
ppointer普通指针p_buf

系统型匈牙利(嵌入式 C):标记存储属性、数据类型(g/st/pst/u32),工业、单片机、驱动代码主流

90 年代大量 C 语言嵌入式、单片机、驱动工程师学习 Windows 匈牙利命名思路,自行简化改造

  1. 吸收微软「前缀标记类型 + 作用域」的核心逻辑;
  2. 简化成嵌入式更短缩写:
    • st= struct 结构体实体
    • pst= pointer + struct 结构体指针
    • g_= global 全局变量,s_=static 静态
  3. 配套u8/u32/pu8这类硬件底层专用前缀。

简单理解:思路起源 Windows 老匈牙利,但 st/pst/g_ 是嵌入式行业二次改造出来的分支规范。

2. 历史脉络梳理

  1. 70 年代:匈牙利程序员 Charles Simonyi 发明应用匈牙利(语义前缀,和类型无关);
  2. 他加入微软后,Windows 团队魔改成系统匈牙利,写 Win32 API、MFC 并推向全世界,这是所有带类型前缀命名的源头;
  3. 做单片机、Linux 驱动、工控的 C 程序员,借鉴这套 “前缀编码信息” 思想,简化、新增了st、pst、g_、s_这套简写,形成嵌入式专属变体;
  4. 现在现状:
    • 新版 Windows、现代 C++ 官方不推荐匈牙利命名;
    • 但嵌入式、底层驱动、老工业代码至今还大规模用g_/st/pst

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询