c语言标识符 C语言标识符的命名规范

2024-10-0123:12:20综合资讯0

在C语言程序设计中,“命名规则”涉及为标识符(如变量名、函数名和宏名)命名时应遵循的规范。

一、常见命名方法

在各种命名方法中,匈牙利命名法尤为著名。由微软程序员查尔斯·西蒙尼(Charles Simonyi)提出,这种方法的核心思想是:通过在变量和函数名中添加前缀来增强程序的可读性。匈牙利命名法的关键在于:标识符的名称前加一个或多个小写字母的前缀,后接一个或多个以首字母大写的单词,这些单词用以指示变量的用途。例如:lpszStr 表示一个指向以‘’结尾字符串的长指针变量。

近年来,骆驼(Camel)命名法逐渐流行。该方法以混合大小写字母的方式来构造标识符,第一个单词首字母小写,后续单词首字母大写。例如:printEmployeePaychecks(),每个逻辑断点用大写字母标识。

与骆驼命名法相似的是帕斯卡(Pascal)命名法,不过帕斯卡命名法的第一个单词首字母是大写的。例如:DisplayInfo() 和 UserName 都是帕斯卡命名法的典型示例。

在C语言编程中,帕斯卡命名法和骆驼命名法都得到了广泛应用。实际上,很多程序员在实际编程中将这两种方法结合使用,例如变量名使用骆驼命名法,而函数名使用帕斯卡命名法。

另一种颇具人气的命名规则是下划线命名法。这种方法随着C语言的普及而流行,在UNIX/Linux环境以及GNU代码中尤为常见。本文介绍的命名规则大多基于这种方法。

二、函数命名

函数名通常使用下划线分隔的小写字母,例如:

设备名_操作名

操作名通常包括:谓语(设备名作为宾语或操作模块标识)或谓语+宾语/表语(设备名作为主语或操作模块标识),如:

tic_init()

adc_is_busy()

uart_tx_char()

对于中断函数,通常采用设备名_isr()的命名方式,例如:

timer2_isr()

三、变量命名

变量的命名也常采用下划线分隔的小写字母形式。变量名应明确、不产生歧义,并保持适当的长度。例如:

int length;

uint32 test_offset;

单字符变量如i、j、k等,常用于函数内部的局部变量。

tmp通常用于临时变量。

局部静态变量应加前缀s_(表示static),例如:

static int s_lastw;

全局变量(特别是供外部访问的全局变量)应加前缀g_(表示global),例如:

void (* g_capture_hook)(void);

四、常量及宏的命名

常量和宏通常采用下划线分隔的大写字母命名方式,设备名作为前缀以避免模块间的命名冲突。例如:

#define TIMER0_MODE_RELOAD2

#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536-(val)))

接口相关的宏可以使用函数命名方法,例如:

#define timer2_clear() (TF2=0)

#define timer0_is_expired() (TF0)

五、常用缩写词

命名规则并没有一种能让所有程序员都满意的统一标准。各种命名方法各有优缺点,因此无需过度纠结于寻找“最佳”命名规则,而应选择一种能够满足大多数项目成员需求的规则并严格遵守。代码中标识符的命名一致性自然会反映出代码的优雅程度。如果使用了经过验证的第三方代码模块,也无需强求修改这些模块中的函数和变量名以追求命名一致性。

常用缩写词见附表。

顺便提一句,如果你对C/C++编程感兴趣,笔者创建了一个C/C++编程学习群(C语言编程学习聚集地(无言建立)),欢迎加入交流。笔者还分享了一份C/C++学习路线图,希望对大家有所帮助~