嵌入式C命名规范——匈牙利前缀法
一句话: 变量名就能看出类型和作用域——g_ 全局、s_ 静态、u8 是 uint8_t、p 是指针。不用跳回声明行扫一眼名字就知道是什么。适合谁读想统一代码风格、让变量名自带含义的嵌入式开发者。作用域前缀前缀含义例子g_全局变量g_u32SysTicks_静态变量文件内s_bInitDone无前缀局部变量u8Idx类型前缀前缀类型例子u8/u16/u32uint8/16/32_tu8Addr,u32Timeouti8/i16/i32int8/16/32_ti16OffsetffloatfTemp,fPowere枚举eTecStatebbool/flagbTrig,bDonep/pp指针/二级指针pBuf,ppList类型名和宏类别规则例子结构体T_前缀全大写下划线T_MAIN_SET,T_ADC_DATA枚举E_前缀值显式赋值E_TEC_OFF0, E_TEC_HEATING1联合体U_前缀U_CONVERT宏/常量全大写下划线TEC_MAX_TEMP,WDT_TIMEOUT_MS局部常量k前缀kMaxRetry 3U格式// 函数大括号换行 void Func_Name(void) { // 局部变量在函数开头声明 uint8_t u8Idx; float fResult; if (u8Idx 0) { // if 大括号同行 fResult 0.0F; } uint8_t *pBuf; // * 靠变量名 } // 常量显式后缀 #define MAX_COUNT 100U // unsigned #define PI 3.14F // float #define TIMEOUT 50000UL // unsigned long规则不复杂——作用域一个前缀、类型一个前缀变量名自己描述功能。三件套下来扫一眼g_eTec1State就知道全局、枚举类型、TEC1 的状态。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。