博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C语言编码风格 样例

Posted on 2011-04-22 19:48  天地玄黄  阅读(772)  评论(0编辑  收藏  举报

      C语言程序各种各样的编码风格,我比较推崇的一种是K&R 书上的模式。下面是从《Unix Network Programming》上抄的一个样例,可以参看一下书写格式:

  1 /* This is a C program templete.
  2  */
  3 #include "unp.h"
  4
  5 int main(int argc, char **argv)
  6 {
  7     char *ptr, **pptr;
  8     char str[INET_ADDRSTRLEN];
  9     struct hostent *hptr;
 10
 11     while (--argc > 0) {
 12         ptr = *++argv;
 13         if ( (hptr = gethostbyname(ptr)) == NULL) {
 14             err_msg("gethostbyname error for host: %s: %s",
 15                     ptr, hstrerror(h_errno));
 16             continue;
 17         }
 18         printf("official hostname: %s\n", hptr->h_name);
 19
 20         for (pptr = hptr->h_aliases; *pptr != NULL; pptr++)
 21             printf("\talias: %s\n", *pptr);
 22
 23         switch (hptr->h_addrtype) {
 24             case AF_INET:
 25                 pptr = hptr->h_addr_list;
 26                 for ( ; *pptr != NULL; pptr++)
 27                     printf("\taddress: %s\n",
 28                             Inet_ntop(AF_INET, *pptr, str, sizeof(str)));
 29                 break;
 30
 31             default:
 32                 err_ret("unknown address type");
 33                 break;
 34         }
 35     }
 36     exit(0);
 37 }

 

1、程序定义写在同一行。有人把返回值单独写在一行,不过我比较喜欢在一行里写的: int main(int argc, char **argc);

2、函数体的大括号另起一行,如本例中第6行的样子。

3、数据定义与代码中间有一空行,如本例第10行。

4、while 语句, for 语句, if 语句后面的括号与while 或者 for 之间有一个空格。

5、循环体 或者 条件判断语句 之后的大括号,一个写在 while 这样的语句之后,一个写在最下面。如本例中第13 行 到 17行。

6、如果if 语句中有赋值的情况,则赋值的括号与最外面的括号之间有一个空格。如本例中第13行,if ( (hptr = …) == NULL)这个语句。

7、如果循环体之内只有一句话,那么可以写大括号也可以不写。