C语言编码标准 您所在的位置:网站首页 函数规则 C语言编码标准

C语言编码标准

2023-03-29 14:36| 来源: 网络整理| 查看: 265

1. 命名规则1.1函数命名

通常每个函数都执行一个操作,因此名称应该清楚地说明它的作用:使用check_for_error()而不是error_check(),使用dump_data_to_file()而不是data_file()。这样可以使函数和数据对象更容易区分。

结构体通常是名词。通过将函数名称设置为动词,并遵循其他命名规范,程序可以更自然地阅读。

后缀有时很有用:

max - 表示某物可达到的最大值,cnt - 表示正在运行的计数变量的当前计数,key - 表示键值。

例如:retry_max 表示重试的最大次数,retry_cnt 表示当前重试次数。

前缀有时很有用:

is - 用于询问某事。每当有人看到Is时,他们会知道这是一个问题。get - 获取一个值。set - 设置一个值。

例如:is_hit_retry_limit表示是否达到最大重试次数。

1.2 在名称中包含单位

如果变量表示时间、重量或其他单位,则在名称中应包括单位,这样开发人员就可以更容易地发现问题。例如:

uint32 timeout_msecs; uint32 my_weight_lbs;1.3 结构体名称

在命名变量时使用下划线(“_”)来分隔名称组件。

在声明结构中的变量时,应按照使用方式进行组织,以尝试最小化由于编译器对齐问题而导致的内存浪费,然后按照大小和字母顺序。

例如,不要使用

int a; char *b; int c; char *d

而应使用

int a; int b; char *c; char *d

每个变量都有自己的类型和行,但在声明位域时可以做出例外(以澄清它是位域的一部分)。注意,通常不建议使用位域。

重要的结构应在使用它们的文件的顶部声明,或在分别的头文件中声明,如果它们在多个源文件中使用。使用结构应通过单独的声明进行,并且如果它们在头文件中声明,则应为“extern”。为每个成员名称使用有意义的前缀可能会有用。例如,对于“struct softc”,前缀可以是“sc_”。

示例

struct foo { struct foo *next; /* List of active foo */ struct mumble amumble; /* Comment for mumble */ int bar; unsigned int baz:1, /* Bitfield; line up entries if desired */ fuz:5, zap:2; uint8_t flag; }; struct foo *foohead; /* Head of global foo list */1.4 堆栈上的变量名

全部使用小写字母,用‘_’作为单词分隔符。

采用这种方法,变量的作用范围在代码中是清晰明确的。现在,所有变量看起来都不同,并且在代码中可以进行识别。

例如:

int handle_error (int error_number) { int error= OsErr(); Time time_of_error; ErrorProcessor error_processor; }1.5 指针变量

‘*’应靠近变量名

例如:

char *name= NULL; char *name, address;1.6全局变量

全局变量应该添加前缀“g_”。

如有可能,应尽量避免使用全局变量。

例如:

Logger g_log; Logger *g_plog;1.7 全局常量

全部用大写并用‘_’分割单词。

全局常量通常按照这种方式命名。您必须小心,以避免与其他全局#define和枚举发生冲突。

例如:

const int A_GLOBAL_CONSTANT= 5;1.8 #define和宏的命名

#define和宏应全为大写字母,使用'_'分隔符。宏应大写、带括号、避免副作用。宏名称前后的空格可以是任何空格,但在文件中使用制表符应始终保持一致。如果它们是函数的内联扩展,则函数全部以小写字母定义,宏的名称全部大写。如果宏是表达式,则将表达式括在括号中。如果宏不止一个语句,则使用“do {...} while (0)”语句,以便尾随分号起作用。将反斜杠右对齐;这使得它更易于阅读。

例如:

#define MAX(a,b) blah #define IS_ERR(err) blah #define MACRO(v, w, x, y) \ do { \ v = (x) + (y); \ w = (y) + 2; \ } while (0)1.9 枚举名称

枚举的标签应用大写字母,使用 '_' 分隔单词。这是枚举标签的标准规则。最后一个元素不使用逗号。

例如:

enum PinStateType { PIN_OFF, PIN_ON };

为错误状态创建一个标签。能够表明枚举不处于任何有效状态是非常有用的。为未初始化或错误状态创建一个标签。如果可能的话,将其作为第一个标签。

例如:

enum { STATE_ERR, STATE_OPEN, STATE_RUNNING, STATE_DYING};



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有