做程序员已经两年多了,感觉代码风格很重要,所以决定抽点时间定制一下自己的代码风格。
参考文档:http://learn.akae.cn/media/ch09.html
代码风格的重要性:
1、 代码风格是一个规范,编写代码的时候就有了规矩,有规矩应该是成熟的标志。
就像是一个人到了一定的年龄,做人处事的时候就有了自己原则一样。
2、 提高编程质量。优秀的代码规范可以使程序员与代码交流的时候,会发生共鸣。
....................................................................
4、 美观。爱美之心,人皆有之。
5、 此规范是针对自己的编程习惯和环境,请大家多提意见共勉之。
编程环境简介:
编程语言:Linux C
编辑器:vim
一、注释
1、文件注释--文件说明
/*
* The revision control tag appears first, with a blank line after it.
* Copyright text appears after the revision control tag.
*/
2、单行注释
/* Most single-line comments look like this. */
3、多行注释
/*
* Multi-line comments look like this. Make them real sentences. Fill
* them so they look like real paragraphs.
*/
二、头文件
1、重复包含保护
#ifndef _SYS_SOCKET_H_
#define _SYS_SOCKET_H_
/*
* Contents of #include file go between the #ifndef and the #endif at the end.
*/
#endif /* !_SYS_SOCKET_H_ */
2、头文件分类,头文件类之间隔一个空行
系统头文件先行,系统头文件也可分类,依据个人习惯。同一类的头文件依据首字母排序。
#include <sys/types.h> /* Non-local includes in brackets. */
#include <net/if.h>
#include <net/if_dl.h>
#include <net/route.h>
#include <netinet/in.h>
#include <protocols/rwhod.h>
#include <assert.h>
#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <paths.h>
#include "pathnames.h" /* Local includes in double quotes. */
三、main函数
main()函数应该在所出现文件的顶部,所用到的同模块函数可做如下声明。
static char *function(int, int, float, int);
static int dirinfo(const char *, struct stat *, struct dirent *,
struct statfs *, int *, char **[]);
static void usage(void);
int main(int, char *[]);
四、宏定义
宏名称必须大写。
1、多行宏定义格式
#define MACRO(v, w, x, y) \
do { \
v = (x) + (y); \
w = (y) + 2; \
} while (/* CONSTCOND */ 0)
2、单行宏定义格式
#define DOUBLE(x) ((x) * 2)
五、枚举变量定义格式
enum enumtype {
ONE,
TWO
} et;
六、结构体定义
1、遵循对其原则,节省空间
2、变量名具有提示作用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 */
七、typedef 结构提别名应该和结构体同名,且大写。
typedef struct BAR {
int level;
} BAR;
相关推荐
7.1. 注释风格 7.2. 文件注释 7.3. 类注释 7.4. 函数注释 7.5. 变量注释 7.6. 实现注释 7.7. 标点, 拼写和语法 7.8. TODO 注释 译者 (YuleFox) 笔记 8. 格式 8.1. 行长度 8.2. 非 ASCII 字符 8.3. 空格...
9.8. 为什么用const说明的常量不能用来定义一个数组的初始大小? 145 9.9. 字符串和数组有什么不同? 145 第10章 位(bit)和字节(byte) 147 10.1. 用什么方法存储标志(flag)效率最高? 147 10.2. 什么是“位屏蔽(bit ...
例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我...
例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 11 1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针...
9.8 为什么用const说明的常量不能用来定义一个数组的初始大小? 9.9 字符串和数组有什么不同? 第10章 位(bit)和字节(byte) 10.1 用什么方法存储标志(flag)效率最高? 10.2 什么是“位屏蔽(bit masking)”...
例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有...
1.6 我似乎不能成功定义一个链表。我试过typedef struct f char *item; NODEPTR next; g *NODEPTR; 但是编译器报了错误信 息。难道在C语言中一个结构不能包含指向自己的指针吗? . . . . 3 1.7 怎样建立和理解非常...
内容涵盖了从认识CPU、Windows运行机理、编程语言的运行机理,到代码的规范和风格、分析方法、调试方法和内核优化,内有作者对许多问题的认知过程和透彻的分析,以及优秀和精彩的编程经验。 性思维(2) 第2章认识...
第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB值的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2...
内容涵盖了从认识CPU、Windows运行机理、编程语言的运行机理,到代码的规范和风格、分析方法、调试方法和内核优化,内有作者对许多问题的认知过程和透彻的分析,以及优秀和精彩的编程经验. 目录: 第1章 程序...