论述网站建设及运营流程,小程序代理公司,可视化域名网站模块被删了,wordpress查看自己的评论在前面曾总结过微软环境下编程的规范【1】#xff0c;但是在linux下#xff0c;没有自动补起#xff0c;以及没有像VS那样高级好用的可视化开发工具#xff0c;如果变量#xff0c;函数定义太复杂#xff0c;敲的也累#xff0c;下面总结linux下编程风格#xff0c;资料… 在前面曾总结过微软环境下编程的规范【1】但是在linux下没有自动补起以及没有像VS那样高级好用的可视化开发工具如果变量函数定义太复杂敲的也累下面总结linux下编程风格资料来源于网络。 一、GNU风格 1.函数返回类型说明和函数名分两行放置函数起始字符和函数开头左花括号放到最左边 例如 static char * main (argc, argv)    int argc;    char *argv[]; {  ...... } 或者是用标准C static char * main (int argc, char *argv[]) {  ...... } 如果参数太长不能放到一行请在每行参数开头处对齐 int net_connect (struct sockaddr_in *cs, char *server, unsigned short int  port,          char *sourceip, unsigned short int sourceport, int sec) 对于函数体我们应该按照如何方式排版 在左括号之前、逗号之后以及运算符号前后添加空格使程序便于阅读例如 if (x  foo (y, z))   haha  bar[4]  5; else   {    while (z)       {         haha  foo (z, z);         z--;       }     return x  bar (); } 当一个表达式需要分成多行书写的时候应该在操作符之前分割。例如 if (foo_this_is_long  bar  win (x, y, z)  remaining_condition) 2. 尽量不要让两个不同优先级的操作符出现在相同的对齐方式中,应该附加额外的括号使得代码缩进可以表示出嵌套。例如 错误的对齐 mode  (inmode[j]  VOIDmode         || GET_MODE_SIZE (outmode[j])  GET_MODE_SIZE (inmode[j])         ? outmode[j] : inmode[j]; 正确的对齐 mode  ((inmode[j]  VOIDmode         || (GET_MODE_SIZE (outmode[j])  GET_MODE_SIZE(inmode[j])))         ? outmode[j] : inmode[j]; 3. 按照如下方式排版do-while语句 do   {     a  foo (a);   } while (a  0); 4. 每个程序都应该以一段简短的说明其功能的注释开头。例如 /* fmt - filter for simple filling of text */ 5. 请为每个函数书写注释说明函数做了什么需要那些种类的参数参数可能值的含义和用途。如果用了非常见的、非标准的东西或者可能导致函数不能工作的任何可能的值应该对他们进行说明。如果存在重要的返回值也需要说明。 6. 不要声明多个变量时跨行每一行都以一个新的声明开头。例如 错误的声明 int foo,     bar; 正确的声明 int foo, bar; 或者 int foo; int bar; 如果他们是全局变量在每一个之前都应该注释。 7. 当一个if中嵌套了另一个if-else时应用花括号把if-else括起来。例如不要写 if (foo)   if (bar)     win ();   else     lose (); 而要写 if (foo)   { if (bar)       win ();     else       lose ();    } 如果再else中嵌套了一个if,可以这样写else if: if (foo)   ... else if (bar) ... 按照与then那部分代码相同的缩进方式缩进else if的then部分代码也可以在花括号 中像下面那样把if嵌套起来 if (foo) ... else { if (bar) ... } 8. 要在同一个声明中同时说明结构标识和变量或者结构标识和类型定义(typedef)。单独的说明结构标识而后用它定义变量或者定义类型。 9. 尽量避免在if的条件中进行赋值。例如不要写 if ((foo  (char *) malloc (sizeof *foo))  0) fatal (virtual memory exhausted); 而要写 foo  (char *) malloc (sizeof *foo); if (foo  0) fatal (virtual memory exhausted); 10. 请在名子中使用下划线以分割单词尽量适用小写把大写字母留给宏和枚举常量以及根据统一惯例使用前缀。例如应该使用类似ignore_space_change_flag的名子不要使用类似iCantReadThis的名子。 11. 用于表明一个命令行选项是否给出的变量应该在选项含义的说明之后而不是选项字符之后被命名。一条注释既应该说明选项的精确含义又应该说明选项的字母。例如 /* ignore changes in horizontal whitespace (-b). */ int ignore_space_change_flag; 二、Linux 内核编程风格 1. Linux内核缩进风格是8个字符。 2. Linux内核风格采用KR标准将开始的大括号放在以行的最后而将结束的大括号放在以行的第一位如下 if (x  1) { ...... } 命名函数时开始的括号使放在下一行的第一位如下 int function(int x) { ...... } 结束的括号在它所占的那一行是空的除了它还可以跟随着同一条语句的继续符号。如 while在do-while循环或者else在if语句中。如下 do { ...... ) while (condition); 以及 if (x  y) { ... } else if (x  y) { ... ) else { ... } 3. 命名尽量简洁。不应该使用诸如 ThisVariableIsATemporaryCounter之类的名子。应该命名为tmp这样容易书写也不难理解。但是命名全局变量就应该用描述性命名方式例如应该命名count_active_users()而不是cntusr()。本地变量应该避免过长。 4. 函数最好短小精悍一般来说不要让函数的参数多于10个否则你应该尝试分解这个过于复杂的函数。 5. 通常情况注释说明代码的功能而不是其实现原理。避免把注释插到函数体内而写到函数前面说明其功能如果这个函数的确很复杂需要其中有部分注释可以写些简短的注释来说明或禁告那些重要的部分但是不能过多。 如果你感觉这些规则过于复杂有一个小工具可以帮助你——indent。例如你要把你代码转换成GNU或Linux核心风格你可以分别使用 indent -gnu test.c indent -kr -i8 test.c 其他用法请使用man indent查询。 【1】http://www.cnblogs.com/mydomain/archive/2010/12/03/1895777.html 【2】 http://www.huihoo.org/gnu/c.html 转载于:https://www.cnblogs.com/mydomain/archive/2011/07/30/2121823.html