⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000012.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;finger&nbsp;(肉猫),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;GNU&nbsp;编码标准(Coding&nbsp;Standards)&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Jan&nbsp;&nbsp;3&nbsp;20:40:48&nbsp;2000)&nbsp;<BR>&nbsp;<BR>原文在&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="http://gnu.clinux.org/prep/standards.html">http://gnu.clinux.org/prep/standards.html</A>&nbsp;<BR>看过之后随手记录了一点儿&nbsp;<BR>&nbsp;<BR>Linux&nbsp;命令行参数处理,&nbsp;<BR>getopt();&nbsp;<BR>getopt_long();&nbsp;<BR>getopt_long_only();&nbsp;<BR>&nbsp;<BR>在调用过程中多使用高层的接口;&nbsp;<BR>eg.&nbsp;readdir;&nbsp;<BR>&nbsp;<BR>signal&nbsp;handling&nbsp;facilities&nbsp;信号处理:&nbsp;<BR>1.&nbsp;BSD:&nbsp;signal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;Best&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&lt;signal.h&gt;&nbsp;<BR>2.&nbsp;POSIX:&nbsp;sigaction&nbsp;<BR>3.&nbsp;USG:&nbsp;signal&nbsp;<BR>&nbsp;<BR>使用临时文件,请检查环境变量TMPDIR&nbsp;<BR>使用由它指定的目录&nbsp;<BR>&nbsp;<BR>编码格式:&nbsp;<BR>or,&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;use&nbsp;ANSI&nbsp;C,&nbsp;format&nbsp;the&nbsp;definition&nbsp;like&nbsp;this:&nbsp;&nbsp;<BR>&nbsp;<BR>static&nbsp;char&nbsp;*&nbsp;<BR>concat&nbsp;(char&nbsp;*s1,&nbsp;char&nbsp;*s2)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;...&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>In&nbsp;ANSI&nbsp;C,&nbsp;if&nbsp;the&nbsp;arguments&nbsp;don't&nbsp;fit&nbsp;nicely&nbsp;on&nbsp;one&nbsp;line,&nbsp;split&nbsp;it&nbsp;&nbsp;<BR>like&nbsp;this:&nbsp;&nbsp;<BR>&nbsp;<BR>int&nbsp;<BR>lots_of_args&nbsp;(int&nbsp;an_integer,&nbsp;long&nbsp;a_long,&nbsp;short&nbsp;a_short,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;a_double,&nbsp;float&nbsp;a_float)&nbsp;<BR>...&nbsp;<BR>&nbsp;<BR>Try&nbsp;to&nbsp;avoid&nbsp;having&nbsp;two&nbsp;operators&nbsp;of&nbsp;different&nbsp;precedence&nbsp;at&nbsp;the&nbsp;same&nbsp;&nbsp;<BR>level&nbsp;of&nbsp;indentation.&nbsp;For&nbsp;example,&nbsp;don't&nbsp;write&nbsp;this:&nbsp;&nbsp;<BR>&nbsp;<BR>mode&nbsp;=&nbsp;(inmode[j]&nbsp;==&nbsp;VOIDmode&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;GET_MODE_SIZE&nbsp;(outmode[j])&nbsp;&gt;&nbsp;GET_MODE_SIZE&nbsp;(inmode[j])&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;outmode[j]&nbsp;:&nbsp;inmode[j]);&nbsp;<BR>&nbsp;<BR>Instead,&nbsp;use&nbsp;extra&nbsp;parentheses&nbsp;so&nbsp;that&nbsp;the&nbsp;indentation&nbsp;shows&nbsp;the&nbsp;&nbsp;<BR>nesting:&nbsp;&nbsp;<BR>&nbsp;<BR>mode&nbsp;=&nbsp;((inmode[j]&nbsp;==&nbsp;VOIDmode&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;(GET_MODE_SIZE&nbsp;(outmode[j])&nbsp;&gt;&nbsp;GET_MODE_SIZE&nbsp;(inmode[j])))&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;?&nbsp;outmode[j]&nbsp;:&nbsp;inmode[j]);&nbsp;<BR>&nbsp;<BR>Insert&nbsp;extra&nbsp;parentheses&nbsp;so&nbsp;that&nbsp;Emacs&nbsp;will&nbsp;indent&nbsp;the&nbsp;code&nbsp;properly.&nbsp;&nbsp;<BR>For&nbsp;example,&nbsp;the&nbsp;following&nbsp;indentation&nbsp;looks&nbsp;nice&nbsp;if&nbsp;you&nbsp;do&nbsp;it&nbsp;by&nbsp;hand,&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;<BR>v&nbsp;=&nbsp;rup-&gt;ru_utime.tv_sec*1000&nbsp;+&nbsp;rup-&gt;ru_utime.tv_usec/1000&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;rup-&gt;ru_stime.tv_sec*1000&nbsp;+&nbsp;rup-&gt;ru_stime.tv_usec/1000;&nbsp;<BR>&nbsp;<BR>but&nbsp;Emacs&nbsp;would&nbsp;alter&nbsp;it.&nbsp;Adding&nbsp;a&nbsp;set&nbsp;of&nbsp;parentheses&nbsp;produces&nbsp;something&nbsp;<BR>&nbsp;that&nbsp;looks&nbsp;equally&nbsp;nice,&nbsp;and&nbsp;which&nbsp;Emacs&nbsp;will&nbsp;preserve:&nbsp;&nbsp;<BR>&nbsp;<BR>v&nbsp;=&nbsp;(rup-&gt;ru_utime.tv_sec*1000&nbsp;+&nbsp;rup-&gt;ru_utime.tv_usec/1000&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;rup-&gt;ru_stime.tv_sec*1000&nbsp;+&nbsp;rup-&gt;ru_stime.tv_usec/1000);&nbsp;<BR>&nbsp;<BR>Format&nbsp;do-while&nbsp;statements&nbsp;like&nbsp;this:&nbsp;&nbsp;<BR>&nbsp;<BR>do&nbsp;<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;foo&nbsp;(a);&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>while&nbsp;(a&nbsp;&gt;&nbsp;0);&nbsp;<BR>&nbsp;<BR>清洗的使用C语言的构造:&nbsp;<BR>1.不要省略int类型的声明;&nbsp;<BR>2.-Wall&nbsp;<BR>3.不要在函数内部进行extern声明;&nbsp;<BR>4.在函数中使用另外的形参命名方式;&nbsp;<BR>5.不要在局部变量和参数中映射全局变量;&nbsp;<BR>&nbsp;<BR>变量和函数的命名方法:&nbsp;<BR>1.在定义全局变量和函数的时候,不要使用过于简单的命名方法,要通过名字反映它&nbsp;<BR>们的用途;&nbsp;<BR>2.不要过分使用缩写;&nbsp;<BR>&nbsp;<BR>3.使用下划线来分割名字中的单词;&nbsp;<BR>4.使用枚举类型来定义constant&nbsp;int,而不要用#define&nbsp;<BR>&nbsp;<BR>不同系统间的可移植性:&nbsp;<BR>1.使用Autoconf来进行配置;&nbsp;<BR>2.define&nbsp;the&nbsp;&quot;feature&nbsp;test&nbsp;macro&quot;&nbsp;_GNU_SOURCE&nbsp;when&nbsp;compiling&nbsp;your&nbsp;C&nbsp;&nbsp;<BR>files.&nbsp;&nbsp;<BR>&nbsp;<BR>调用系统函数:&nbsp;<BR>1.不要使用sprintf的返回值;&nbsp;<BR>2.vfprintf不是都提供的;&nbsp;<BR>3.main要返回int;&nbsp;<BR>4.不要明确的声明系统函数;&nbsp;<BR>5.如果必须定义系统函数的话,不要指明参数类型;&nbsp;<BR>6.对于处理string的函数需要特别对待;&nbsp;<BR>&nbsp;<BR>i18n,国际化:&nbsp;<BR>1.要在每一个程序中使用gettext库;&nbsp;<BR>&nbsp;&nbsp;eg.&nbsp;printf&nbsp;(gettext&nbsp;(&quot;Processing&nbsp;file&nbsp;`%s'...&quot;));&nbsp;<BR>&nbsp;<BR>程序的文档化:&nbsp;<BR>&nbsp;<BR>发布过程:&nbsp;<BR>&nbsp;<BR>Makefile约定:&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>&nbsp;<BR>&lt;---&lt;&lt;&lt;&lt;&nbsp;&nbsp;<BR>[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;<BR>[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;<BR>[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;<BR>[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;[u[1P&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;finger.lib.tsin]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -