<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">第<span class="ff2">9</span>章</div><div class="t m0 x2 h3 y2 ff3 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x3 h2 y1 ff2 fs0 fc0 sc0 ls1 ws0">Linux<span class="ff4 ls0">程序设计基础</span></div><div class="t m0 x4 h4 y3 ff4 fs1 fc1 sc1 ls2 ws0">本章学习目标</div><div class="t m0 x5 h5 y4 ff5 fs1 fc1 sc0 ls0 ws0">通过对本章的学习,读者应该掌握以</div><div class="t m0 x6 h6 y5 ff3 fs1 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x7 h5 y6 ff5 fs1 fc1 sc0 ls0 ws0">下主要内容:</div><div class="t m0 x7 h6 y7 ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">编程风格</span></div><div class="t m0 x7 h6 y8 ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">下<span class="ff4 ls4">IDE</span>的使用</span></div><div class="t m0 x7 h6 y9 ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">下使用<span class="ff4 ls5">GNU cc</span>开发应用程序</span></div><div class="t m0 x7 h6 ya ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">程序的调试</span></div><div class="t m0 x7 h6 yb ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">下使用<span class="ff4 ls6">RCS/CVS</span>来管理源程序</span></div><div class="t m0 x7 h6 yc ff6 fs1 fc1 sc0 ls0 ws0">Ø <span class="_ _0"> </span><span class="ff4 ls3">Linux</span><span class="ff5">下软件打包</span></div><div class="t m0 x8 h7 yd ff7 fs2 fc2 sc0 ls0 ws0">www.linuxidc.com</div><div class="t m0 x9 h8 ye ff8 fs3 fc2 sc0 ls0 ws0">Linux<span class="ff9">公社</span>(LinuxIDC.com) <span class="ff9">是包括</span>Ubuntu,Fedora,SUSE<span class="ff9">技术,最新</span>IT<span class="ff9">资讯等</span>Linux<span class="ff9">专业类网站。</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[0.000000,-1.333333,1.333333,0.000000,-81.333333,756.813333]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/bg2.jpg"><div class="t m2 xa h9 yf ff2 fs4 fc0 sc0 ls0 ws0">Linux<span class="ff4">公社</span></div><div class="t m2 xb ha y10 ff3 fs4 fc0 sc0 ls0 ws0"> </div><div class="t m2 xc h9 y11 ff2 fs4 fc4 sc0 ls7 ws0">www.Linuxidc.com</div><div class="t m2 x7 hb y12 ffa fs5 fc5 sc0 ls0 ws0"><span class="_ _1"> </span><span class="ff2 fs6 fc1 ls8">Linux<span class="ff4 ls0">公社(</span><span class="ls9">LinuxIDC.com<span class="ff4 ls0">)于</span><span class="lsa">2006<span class="ff4 ls0">年<span class="ff2">9</span>月</span>25</span><span class="ff4">日注册并</span></span></span></div><div class="t m2 xd hb y13 ff4 fs6 fc1 sc0 ls0 ws0">开通网站,<span class="ff2 ls8">Linux</span><span class="lsb">现在已经成为一种广受关注和支持的</span></div><div class="t m2 xd hb y14 ff4 fs6 fc1 sc0 ls0 ws0">一种操作系统,<span class="ff2">IDC</span><span class="lsc">是互联网数据中心,<span class="ff2 ls9">LinuxIDC</span></span>就</div><div class="t m2 xd hb y15 ff4 fs6 fc1 sc0 ls0 ws0">是关于<span class="ff2 ls8">Linux<span class="ff4">的数据中心。</span></span></div><div class="t m2 x7 hb y16 ffa fs5 fc5 sc0 ls0 ws0"><span class="_ _1"> </span><span class="ff2 fs6 fc1 lsc">LinuxIDC.com<span class="ff4 ls9">提供包括<span class="ff2">Ubuntu</span><span class="ls0">,</span></span><span class="lsd">Fedora<span class="ff4 ls0">,</span><span class="lse">SUSE<span class="ff4 ls0">技</span></span></span></span></div><div class="t m2 xd hb y17 ff4 fs6 fc1 sc0 ls0 ws0">术,以及最新<span class="ff2 lsf">IT</span>资讯等<span class="ff2 ls10">Linux</span>专业类网站。</div><div class="t m2 x8 h7 yd ff7 fs2 fc2 sc0 ls0 ws0">www.linuxidc.com</div><div class="t m2 x9 h8 ye ff8 fs3 fc2 sc0 ls0 ws0">Linux<span class="ff9">公社</span>(LinuxIDC.com) <span class="ff9">是包括</span>Ubuntu,Fedora,SUSE<span class="ff9">技术,最新</span>IT<span class="ff9">资讯等</span>Linux<span class="ff9">专业类网站。</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[0.000000,-1.333333,1.333333,0.000000,-81.333333,756.813333]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/bg3.jpg"><div class="t m0 xe hc y18 ffb fs1 fc6 sc0 ls11 ws1">9.1 <span class="ff4 sc2 ls2 ws0">概述</span></div><div class="t m0 xf hd y19 ffc fs1 fc6 sc0 ls12 ws2">9.1.1 Linux<span class="ff4 sc2 ls2 ws0">编程</span></div><div class="t m0 x10 he y1a ff4 fs7 fc1 sc0 ls13 ws0">L<span class="_ _2"></span>in<span class="_ _2"></span>u<span class="_ _2"></span>x软件开发一直在I<span class="_ _2"></span>n<span class="_ _2"></span>t<span class="_ _2"></span>e<span class="_ _2"></span>r<span class="_ _2"></span>n<span class="_ _2"></span>et环境下讲行。这个环境</div><div class="t m0 x11 hf y1b ff3 fs7 fc1 sc0 ls13 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y1c ff4 fs7 fc1 sc0 ls14 ws0">是全球性的,编程人员来自世界各地<span class="_ _2"></span>。只<span class="_ _2"></span>要能<span class="_ _2"></span>够访<span class="_ _2"></span>问<span class="_ _2"></span>W<span class="_ _2"></span>e<span class="_ _2"></span>b</div><div class="t m0 x11 hf y1d ff3 fs7 fc1 sc0 ls14 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y1e ff4 fs7 fc1 sc0 ls15 ws0">站<span class="_ _3"></span>点<span class="_ _3"></span>,<span class="_ _3"></span>就<span class="_ _3"></span>可<span class="_ _3"></span>以<span class="_ _3"></span>启<span class="_ _3"></span>动<span class="_ _4"></span>一<span class="_ _4"></span>个<span class="_ _4"></span>以<span class="_ _3"></span>Linux<span class="_ _3"></span>为<span class="_ _4"></span>基<span class="_ _4"></span>础<span class="_ _3"></span>的<span class="_ _4"></span>软<span class="_ _3"></span>件<span class="_ _4"></span>项<span class="_ _4"></span>目<span class="_ _4"></span>。</div><div class="t m0 x11 hf y1f ff3 fs7 fc1 sc0 ls15 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y20 ff4 fs7 fc1 sc0 ls16 ws0">Linux<span class="_ _5"></span>开<span class="_ _5"></span>发<span class="_ _5"></span>工<span class="_ _5"></span><span class="ls17">作经常是在L<span class="_ _6"></span>i<span class="_ _6"></span>n<span class="_ _6"></span>u<span class="_ _6"></span>x用户决定共同完成一个项</span></div><div class="t m0 x11 hf y21 ff3 fs7 fc1 sc0 ls17 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y22 ff4 fs7 fc1 sc0 ls18 ws0">目时开始的。当开发工作完成后,该软<span class="_ _2"></span>件就<span class="_ _2"></span>被放<span class="_ _2"></span>到</div><div class="t m0 x12 hf y23 ff3 fs7 fc1 sc0 ls18 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y24 ff4 fs7 fc1 sc0 ls19 ws0">I<span class="_ _6"></span>n<span class="_ _6"></span>t<span class="_ _6"></span>e<span class="_ _6"></span>r<span class="_ _6"></span>n<span class="_ _6"></span>e<span class="_ _6"></span>t<span class="_ _7"></span>站点<span class="_ _7"></span>上,任何用户都可以访问和下载它。由于</div><div class="t m0 x11 hf y25 ff3 fs7 fc1 sc0 ls19 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y26 ff4 fs7 fc1 sc0 ls14 ws0">这个活跃的开发环境,新的以Li<span class="_ _2"></span>n<span class="_ _2"></span>u<span class="_ _2"></span>x为<span class="_ _2"></span><span class="ls1a">基础的软件功能日</span></div><div class="t m0 x11 hf y27 ff3 fs7 fc1 sc0 ls1a ws0"><span class="fc3 sc0"> </span></div><div class="t m0 xf he y28 ff4 fs7 fc1 sc0 ls15 ws0">益强大,而且呈现爆炸式的增长态势。</div><div class="t m0 x13 he y29 ff4 fs7 fc1 sc0 ls1b ws0">大多数Linux软件是经过自由软件基金会(Free </div><div class="t m0 xf he y2a ff4 fs7 fc1 sc0 ls1c ws0">Software Foundation)提供的GNU(GNU 即</div><div class="t m0 x14 hf y2b ff3 fs7 fc1 sc0 ls1c ws0"> </div><div class="t m0 x15 hf y2a ff4 fs7 fc1 sc0 ls1c ws0">GNU<span class="ff6 ls0">’</span><span class="ls1d">s not </span></div><div class="t m0 xf he y2c ff4 fs7 fc1 sc0 ls16 ws0">UNIX)公开认证授权的,因而通常被称作GNU软件。GNU</div><div class="t m0 x16 hf y2d ff3 fs7 fc1 sc0 ls16 ws0"> </div><div class="t m0 xf he y2e ff4 fs7 fc1 sc0 ls1e ws0">软件免费提供给用户使用,并被证明是非常可靠和高效</div><div class="t m0 x16 hf y2f ff3 fs7 fc1 sc0 ls1e ws0"> </div><div class="t m0 xf he y30 ff4 fs7 fc1 sc0 ls1f ws0">的。许多流行的Linux实用程序如C编译器、shell和编辑</div><div class="t m0 x17 hf y31 ff3 fs7 fc1 sc0 ls1f ws0"> </div><div class="t m0 xf he y32 ff4 fs7 fc1 sc0 ls1f ws0">器都是GNU软件应用程序。</div><div class="t m0 x8 h7 yd ff7 fs2 fc2 sc0 ls0 ws0">www.linuxidc.com</div><div class="t m0 x9 h8 ye ff8 fs3 fc2 sc0 ls0 ws0">Linux<span class="ff9">公社</span>(LinuxIDC.com) <span class="ff9">是包括</span>Ubuntu,Fedora,SUSE<span class="ff9">技术,最新</span>IT<span class="ff9">资讯等</span>Linux<span class="ff9">专业类网站。</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[0.000000,-1.333333,1.333333,0.000000,-81.333333,756.813333]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/bg4.jpg"><div class="t m0 x18 hb y33 ffd fs6 fc1 sc0 ls20 ws0">Linux<span class="ff4 ls10">程序需要首先转化为低级机器语言即所谓的二进</span></div><div class="t m0 x19 h10 y34 ff3 fs6 fc1 sc0 ls10 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y35 ff4 fs6 fc1 sc0 ls0 ws0">制代码以后,才能被操作系统执行。例如编程时,先用普</div><div class="t m0 x19 h10 y36 ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y37 ff4 fs6 fc1 sc0 ls0 ws0">通的编程语言生成一系列指令,这些指令可被翻译为适当</div><div class="t m0 x19 h10 y38 ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y39 ff4 fs6 fc1 sc0 ls0 ws0">的可执行应用程序的二进制代码。这个翻译过程可由解释</div><div class="t m0 x19 h10 y3a ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y3b ff4 fs6 fc1 sc0 ls0 ws0">器一步步来完成,或者也可以立即由编译器明确地完成。</div><div class="t m0 x19 h10 y3c ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a hb y3d ffd fs6 fc1 sc0 lsd ws0">shell<span class="ff4 ls0">编程语言如</span><span class="ls9">BASH<span class="ff4 ls0">、</span><span class="lsb">TCSH<span class="ff4 ls0">、</span><span class="ls20">GAWK<span class="ff4 ls0">、</span><span class="ls21">Perl<span class="ff4 ls0">、</span><span class="ls22">Tcl<span class="ff4 ls0">和</span><span class="ls23">Tk<span class="ff4 lsa">都利用</span></span></span></span></span></span></span></div><div class="t m0 x1b h10 y3e ff3 fs6 fc1 sc0 lsa ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y3f ff4 fs6 fc1 sc0 ls0 ws0">自己的解释器。用这些语言编制的程序尽管是应用程序文</div><div class="t m0 x19 h10 y40 ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y41 ff4 fs6 fc1 sc0 ls0 ws0">件,但可以直接运行。编译器则不同,它将生成一个独立</div><div class="t m0 x19 h10 y42 ff3 fs6 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1a h11 y43 ff4 fs6 fc1 sc0 ls0 ws0">的二进制代码文件然后才可以运行。</div><div class="t m0 x8 h7 yd ff7 fs2 fc2 sc0 ls0 ws0">www.linuxidc.com</div><div class="t m0 x9 h8 ye ff8 fs3 fc2 sc0 ls0 ws0">Linux<span class="ff9">公社</span>(LinuxIDC.com) <span class="ff9">是包括</span>Ubuntu,Fedora,SUSE<span class="ff9">技术,最新</span>IT<span class="ff9">资讯等</span>Linux<span class="ff9">专业类网站。</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[0.000000,-1.333333,1.333333,0.000000,-81.333333,756.813333]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272e6c27c0929657da6a382/bg5.jpg"><div class="t m0 x7 hd y44 ffe fs1 fc6 sc0 ls24 ws3">9.1.2 Linux<span class="ff4 sc2 ls2 ws0">编程风格</span></div><div class="t m0 x1 h12 y45 ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">1</span><span class="ls25">)函数返回类型说明和函数名分两行放置,函数起始字符和函数</span></div><div class="t m0 x1c h13 y46 ff3 fs8 fc1 sc0 ls25 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1 h14 y47 ff4 fs8 fc1 sc0 ls26 ws0">开头左花括号放到最左边。</div><div class="t m0 x1 h14 y48 ff4 fs8 fc1 sc0 ls27 ws0">(2)尽量不要让两个不同优先级的操作符出现在相同的对齐方式</div><div class="t m0 x16 h13 y49 ff3 fs8 fc1 sc0 ls27 ws0"> </div><div class="t m0 x1 h14 y4a ff4 fs8 fc1 sc0 ls25 ws0">中,应该附加额外的括号使得代码缩进可以表示出嵌套。</div><div class="t m0 x1 h14 y4b ff4 fs8 fc1 sc0 ls28 ws0">(3)按照如下方式排版do-while语句:</div><div class="t m0 x1d h12 y4c ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">4</span><span class="ls26">)每个程序都应该以一段简短的说明其功能的注释开头。</span></div><div class="t m0 x1 h12 y4d ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">5</span><span class="ls25">)请为每个函数书写注释,说明函数是做什么的,需要哪些入口</span></div><div class="t m0 x1c h13 y4e ff3 fs8 fc1 sc0 ls25 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1 h14 y4f ff4 fs8 fc1 sc0 ls27 ws0">参数,参数可能值的含义和用途。如果用了非常见的、非标准的东</div><div class="t m0 x1e h13 y50 ff3 fs8 fc1 sc0 ls27 ws0"> </div><div class="t m0 x1 h14 y51 ff4 fs8 fc1 sc0 ls25 ws0">西,或者可能导致函数不能工作的任何可能的值,应该进行特殊说明。</div><div class="t m0 x1f h13 y52 ff3 fs8 fc1 sc0 ls25 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1 h14 y53 ff4 fs8 fc1 sc0 ls27 ws0">如果存在重要的返回值,也需要说明。</div><div class="t m0 x1 h12 y54 ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">6</span><span class="ls25">)不要声明多个变量时跨行,每一行都以一个新的声明开头。</span></div><div class="t m0 x1 h12 y55 ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">7</span><span class="ls26">)当一个<span class="ffd ls29">if</span><span class="ls2a">中嵌套了另一个<span class="ffd ls2b">if-else</span><span class="ls27">时,应用花括号把<span class="ffd ls2c">if-else</span></span></span>括起来。</span></div><div class="t m0 x1 h12 y56 ff4 fs8 fc1 sc0 ls0 ws0">(<span class="ffd">8</span><span class="ls25">)要在同一个声明中同时说明结构标识和变量或者结构标识和类</span></div><div class="t m0 x1c h13 y57 ff3 fs8 fc1 sc0 ls25 ws0"><span class="fc3 sc0"> </span></div><div class="t m0 x1 h12 y58 ff4 fs8 fc1 sc0 ls0 ws0">型定义<span class="ffd ls2d">(typedef)</span><span class="ls26">。先定义变量,再使用。</span></div><div class="t m0 x1 h15 y59 ff5 fs8 fc6 sc2 ls2e ws0">1.GNU风格</div><div class="t m0 x8 h7 yd ff7 fs2 fc2 sc0 ls0 ws0">www.linuxidc.com</div><div class="t m0 x9 h8 ye ff8 fs3 fc2 sc0 ls0 ws0">Linux<span class="ff9">公社</span>(LinuxIDC.com) <span class="ff9">是包括</span>Ubuntu,Fedora,SUSE<span class="ff9">技术,最新</span>IT<span class="ff9">资讯等</span>Linux<span class="ff9">专业类网站。</span></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[0.000000,-1.333333,1.333333,0.000000,-81.333333,756.813333]}'></div></div>