/*
* 非常重要的单行注释像这样
*/
/* 一般的单行注释这样写 */
/*
* 多行注释
* 这样写
*/
//这种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]> */
/* 记得最后一行必须是空着的 */
|