小野熊的c语言编程风格

模仿bsd编码规范写了个给自己的规范,呵呵。

?





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

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

/*

 * 非常重要的单行注释像这样

 */

/* 一般的单行注释这样写 */

/*

 * 多行注释

 * 这样写

 */

//这种c++注释风格只可以用在调试(注释代码)上,不能做一般的注释

/* 所以上一句是不符合小野熊编程规范的 */

#if 0

如果你有大段代码要注释,用#if
0

如果你正在调试两种情况,用#if
0 + #else

因为可以方便的把#if
0改为#if
1

#else

这样就可以快速切换到这里的代码

#endif

/*

这是另一种注释代码的方式

当你要重新启用这里的代码时

就把第一行的/*变成//*

很神奇吧

//*/

#include <assert.h> /* include文件时记得按首字母排序 */

#include <stdio.h>  /* 先include系统(/usr/include)里的头文件 再include自己的头文件 */

#include <unistd.h> /* 记得空一行 */

#include "stack.h"

#undef SWAP

#define SWAP(x,y) do { \

    typeof(x) tmp = (x); \

    (x) = (y); \

    (y) = tmp; \

} while
(0)

/*

 * 写宏的时候学会用末尾的\以及do ... while(0)

 * 并且先把它给undef了,免得出错

 * 放心,假如这个宏原本就没有定义的话#undef也不会出错

 * 另外,宏名全大写

 */

enum
boolean {

    TRUE = 1,

    FALSE = 0

};

/*

 * 写enum的时候把member都写成全大写

 * enum最后会被当作宏定义来处理

 */

/*

 * 无论一个结构体中记录数据的类型有多小,都请用另一个结构体来包装

 * 因为这样不仅增强了可读性

 * 而且扩展起来也方便

 */

struct
foodata {

    char
*string; /* 千万不要用data之类的名字 —— 万一你有好几个member呢?管她们叫data1 data2? */

};

typedef
int count; /* 永恒不变的类型用typedef来包装 增强可读性 */

struct
foo {

    struct
foo *next;

    struct
foodata data; /* 现在就可以用data了 */

    count len;

};

/*

 * 无论如何,千万不要用typedef来包装结构体!!

 */

static
char function(int); /* 函数原型不用写出形参名 */

static
void usage(void);

int
/* 定义完整函数时, 第一行为函数返回值 */

main(int
argc, char
**argv) /* 第二行为函数名以及形参名以及形参类型 */

{ /* 第三行留给单独的开大括号 */

    int
ch;

    enum
boolean aflag = FALSE;

    enum
boolean fflag = FALSE;

    

    while
((ch = getopt(argc, argv, "oaf:")) != -1) { /*

                                                      * 像这些while,for,和if就不要单独留一行给开大括号了

                                                      * 处理命令行形参用getopt(man 3 getopt)

                                                      */

        switch
(ch) { /* 开大括号后需缩进 */

        case
‘a‘: /* case是个例外 */

            aflag = TRUE;

            /* FALLTHROUGH */
/* 使用switch特殊用法时需注明 */

        case
‘f‘:

            fflag = FALSE;

            break;

        case
‘o‘:

            putchar(function(1));

            break;

        case
‘?‘:

            /* FALLTHROUGH */

        default:

            usage();

        }

    }

    

    for
(;;)

        ; /* 不管for,while,if的语句有多短,都要缩进 */

    

    for
(;;) {

        function(2);

        function(3);

        usage();

    }

    

    for
(;;) /* 如果只有一个语句就不要写开大括号了 */

        SWAP(ch, aflag); /* 函数调用以及声明时在‘,‘后加一个空格 */

    

    while
(1) /* 缩进一般为8格 */

        ch = a + really + long
+ statement + that + needs + /* 如果一个表达式太长,怎样美观怎样缩进(用空格) */

                 two + lines; /* 但是她最前面必须跟随上一行来用tab缩进 */

    

    return
0;

}

static
char

function(int
a)

{ /* 最后声明完整的函数 */

    return
(a == 0) ? a : function(abs(a) - 1);

}

static
void

usage(void)

{

    fprintf(stderr,

            "usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]] \n"

            "usage: f [-a | -b] [-c [-dEe] [-n number]] \n");

}

/* 如果这个程序有什么bug的话,在文件末尾写上 */

/*

 * 这个程序不能运行

 */

/* 最后写作者信息 */

/* Author: Louis(TinyKUMA) Lisp-CN <[email protected]> */

/* 记得最后一行必须是空着的 */

  

 

时间: 2024-10-08 17:21:09

小野熊的c语言编程风格的相关文章

C编程风格.

C语言编程风格. 关于编程风格,不同书上有不同规范,不同公司都有自己的一套定义.根据自己的编程习惯做个简要说明. 1.变量定义 在定义变量时,前缀使用变量的类型,之后使用表现变量用途的英文单词或单词缩写,且每个单词或缩写的首字母大写. 无符号变量使用u8,u16,u32...  eg:unsigned char u8Temp; 有符号变量使用s8,s16,s23...  eg:int s32Temp; 浮点数变量使用 f32,d64....... eg:float f32Temp double

C语言的编程风格

C语言的编程风格:第一:缩进格式 Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受. 理由是:缩进的大小是为了清楚的定义一个块的开始和结束.特别是当你已经在计算机前面呆了20多个小时了以后,你会发现一个大的缩进格式使得你对程序的理解更容易. 现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受.回答是,但你的程序有3个以上的缩进的时候,你就应该修改

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

转:从《The C Programming Language》中学到的那些编程风格和设计思想

这儿有一篇写的很好的读后感:http://www.cnblogs.com/xkfz007/articles/2566424.html 读书不是目的,关键在于思考. 很早就在水木上看到有人推荐<The C Programming Language>这本书,一直都没看,开学一个月就专心拜读了一下,并认真做了课后习题.读来收获不少,主要有两点:一是加深了自己对一些基础知识的理 解和感悟:二是从中学到了一些不错的编程风格和设计思想,这些东西虽看起来不起眼但细细嚼来还是很值得学习的.下面就从四个方面做一

Swift 编程风格指南(raywenderlich.com 版本)

官方 raywenderlich.com Swift 编程风格指南 本文版权归 raywenderlich.com .The Official raywenderlich.com Swift Style Guide项目以及所有贡献者所有.译者翻译仅供知识传播使用. 本风格指南的目标是让Swift代码更简洁.可读更强. 语言 推荐使用跟苹果API文档风格统一的英语. 推荐: var color = "red" 不推荐: var colour = "red" 空白 使用

来自 Google 的 R 语言编码风格指南

本文转自Xiao Nan的博客 R语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google 的 R 用户群体协同设计而成. 概要: R编码风格约定 文件命名: 以 .R (大写) 结尾 标识符命名: variable.name, FunctionName, kConstantName 单行长度: 不超过 80 个字符 缩进: 两个空格, 不使用制表符 空白 花括号: 前括号不折行写, 后括号独占一行 赋

【C++系列小结】面向过程的编程风格

前言 编程语言有面向过程和面向对象之分,因此编程风格也有所谓的面向过程的编程和面向对象的编程,而且语言的性质不会限制编程的风格. 这里主要说一下面向过程的编程. "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想. C语言是面向过程的编程语言,但是依然可以写出面向对象的程序,同样C++也当然可以写出面向过程的程序咯. 如果我们把所有的程序代码都写在一个main函数里面,那么这个程序显然会显得很不和谐吧.理想一点的做法是我们把一些看起来和main函数逻辑上关

linux 操作系统下c语言编程入门

2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编

Google Java编程风格指南(转)

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准.然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见. 1.1 术语说明 在本文档中,除非另有说明: 术语cl