No.
2022-07-21
  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

C 语言编程风格约定

写了多年代码,每个公司的代码风格都不一样,这里结合一些常用的规范,对本站的 C 语言代码风格作一个约定。

排版格式

  1. 缩进统一采用 4 空格缩进,禁止使用 tab。

  2. 缩进使用 K&R 缩进风格或 BSD 缩进风格均可,但是要统一。建议使用 K&R 缩进风格。

    K&R 缩进风格:
    函数左大括号另起一行置于行首,且独占一行。其余情况(if/while/for/else/do等关键字)对应的左花括号旋转于前一行行尾,不独占一行。右大括号独占一行。

    BSD缩进风格:
    左右花括号均独占一行。

  3. 相对独立的代码块间用一行空行隔开。

  4. 代码行宽不得超过120个字符。对于条件语句,超过时要合理换行,换行对齐后,采用4字符缩进,条件符号(&&, ||)位于上一行行尾。

  5. 一元运算符后不加空格,(如 &, *, +, -, ~, !, sizeof, typeof, alignof, attribute, defined, ++, –),二元或三元运算符两侧都要使用一个空格,(如 +, -, =, <, >, *, /, %, |, &, ^, <=, >=, ==, !=, ?:),结构体成员操作符前后不加空格,(., ->)。

  6. if, while, for, switch等关键字与后面括号间加一个空格,函数名与函数参数的左括号间不加空格,行尾不要加空格。

  7. 不要依赖优先级,尽量在必要的地方添加括号保证程序易读性。

注释

  1. 文件注释应包含:功能描述,作者,创建时间,最后修改时间,修改人,修改内容。具体格式:

     /*
     *  Copyright(C) 2022 tt All rights reserved.
     *  
     *  FileName: test.c
     *  Author: tt
     *  Created Date: 2022-05-20
     *  Description: xxxx
     *  ==========
     *  Modifier    Last Modify Time    Modify Content
     *  tt1         2022-05-21          增加xxx功能
     *  tt2         2022-05-24          修改xxx
     */
    
  2. 可以使用 ///**/ 来注释,注释尽量简洁。告诉别人你的代码做了什么,而不是怎么做的。

命名

  1. 文件命名格式为 模块名+下划线+功能描述.后缀,且用纯小写。

  2. 宏命名用纯大写加下划线方式,前面加模块前缀。

  3. 使用typedef对结构体、联合、枚举取别名时,尽量使用匿名类型,若需要指针自嵌套,加tag前缀。

  4. 各种变量及函数采用小驼峰方式,全局变量建议可以加上 g_ 前缀。

  5. 常量尽量写为有意义的宏。

  6. 使用完整单词或业界公认缩写,避免使人产生误解。

缩写 全词 缩写 全词 缩写 全词
addr address info information ret return
app application ins insert scr screen
arg argument len length sec second
bk back lib library seg segment
btn button lnk link sel select
buf buff log logical src source
calc calculate max maximum std standard
char character mem memory str string
clk click mid middle sub subtract
cmp compare min minimum sum summation
col column msg message svr server
cpy copy mul multiply sync synchronization
db database num number sys system
del delete obj object tbl table
dest destination org origin
original
temp/tmp temporary
dev device para parameter tran/trans translate
transation
transparent
diff different pic picture txt text
div divide pkg package unk unknown
doc document pos position upd update
drv driver pre/prev previous upg upgrade
env environment prog program util utility
err error proc process
procedure
val value
exec execute pwd password var variable
flg flag ptr pointer ver version
func/fn function pub public vert vertical
img image reg register vir virus
inc increase req request wnd window

参考
C语言:代码规范浅谈
Linux 内核代码风格
Recommended C Style and Coding Standards中文版全文
C语言编程规范 clean code