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

📄 00000010.htm

📁 水木社区 embeded 版精华区 下载
💻 HTM
📖 第 1 页 / 共 3 页
字号:
main&nbsp;[test.c]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果函数并不是向&nbsp;calls&nbsp;给出的文件里的,&nbsp;&nbsp;calls&nbsp;不知道所调用的函数来自哪里&nbsp;<br />,&nbsp;则只显示函数的名字:&nbsp;<br />printf&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;calls&nbsp;不对递归和静态函数输出.&nbsp;递归函数显示成下面的样子:&nbsp;<br />fact&nbsp;&lt;&lt;&lt;&nbsp;recursive&nbsp;in&nbsp;factorial.c&nbsp;&gt;&gt;&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;静态函数象这样显示:&nbsp;<br />total&nbsp;[static&nbsp;in&nbsp;calculate.c]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;作为一个例子,&nbsp;假设用&nbsp;calls&nbsp;处理下面的程序:&nbsp;<br />#include&nbsp;&lt;stdio.h&gt;&nbsp;<br />main&nbsp;()&nbsp;<br />{&nbsp;<br />char&nbsp;my_string[]&nbsp;=&nbsp;&quot;hello&nbsp;there&quot;;&nbsp;<br />my_print&nbsp;(my_string);&nbsp;<br />my_print2(my_string);&nbsp;<br />}&nbsp;<br />my_print&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />printf&nbsp;(&quot;The&nbsp;string&nbsp;is&nbsp;%s\n&quot;,&nbsp;string);&nbsp;<br />}&nbsp;<br />my_print2&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;char&nbsp;*string2;&nbsp;<br />&nbsp;&nbsp;int&nbsp;size,&nbsp;size2,&nbsp;i;&nbsp;<br />&nbsp;&nbsp;size&nbsp;=&nbsp;strlen&nbsp;(string);&nbsp;<br />&nbsp;&nbsp;size2&nbsp;=&nbsp;size&nbsp;-1;&nbsp;<br />&nbsp;&nbsp;string2&nbsp;=&nbsp;(char&nbsp;*)&nbsp;malloc&nbsp;(size&nbsp;+&nbsp;1);&nbsp;<br />&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;size;&nbsp;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;string2[size2&nbsp;-&nbsp;i]&nbsp;=&nbsp;string[i];&nbsp;<br />&nbsp;&nbsp;string2[size]&nbsp;=&nbsp;`\0';&nbsp;<br />&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;printed&nbsp;backward&nbsp;is&nbsp;%s\n&quot;,&nbsp;string2);&nbsp;<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;将产生如下的输出:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;main&nbsp;[test.c]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_print&nbsp;[test.c]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_print2&nbsp;[test.c]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strlen&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;malloc&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;<br />calls&nbsp;有很多命令行选项来设置不同的输出格式,&nbsp;有关这些选项的更多信息请参考&nbsp;cal&nbsp;<br />ls&nbsp;的指南页.&nbsp;方法是在命令行上键入&nbsp;calls&nbsp;-h&nbsp;.&nbsp;<br />cproto&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cproto&nbsp;读入&nbsp;C&nbsp;源程序文件并自动为每个函数产生原型申明.&nbsp;用&nbsp;cproto&nbsp;可以在写&nbsp;<br />程序时为你节省大量用来定义函数原型的时间.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果你让&nbsp;cproto&nbsp;处理下面的代码:&nbsp;<br />#include&nbsp;&nbsp;&lt;stdio.h&gt;&nbsp;<br />main&nbsp;()&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;char&nbsp;my_string[]&nbsp;=&nbsp;&quot;hello&nbsp;there&quot;;&nbsp;<br />&nbsp;&nbsp;my_print&nbsp;(my_string);&nbsp;<br />&nbsp;&nbsp;my_print2(my_string);&nbsp;<br />}&nbsp;<br />my_print&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;is&nbsp;%s\n&quot;,&nbsp;*string);&nbsp;<br />}&nbsp;<br />my_print2&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;char&nbsp;*string2;&nbsp;<br />&nbsp;&nbsp;int&nbsp;size,&nbsp;size2,&nbsp;i;&nbsp;<br />&nbsp;&nbsp;size&nbsp;=&nbsp;strlen&nbsp;(string);&nbsp;<br />&nbsp;&nbsp;size2&nbsp;=&nbsp;size&nbsp;-1;&nbsp;<br />&nbsp;&nbsp;string2&nbsp;=&nbsp;(char&nbsp;*)&nbsp;malloc&nbsp;(size&nbsp;+&nbsp;1);&nbsp;<br />&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;size;&nbsp;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;string2[size2&nbsp;-&nbsp;i]&nbsp;=&nbsp;string[i];&nbsp;<br />&nbsp;&nbsp;string2[size]&nbsp;=&nbsp;`\0';&nbsp;<br />&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;printed&nbsp;backward&nbsp;is&nbsp;%s\n&quot;,&nbsp;string2);&nbsp;<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;你将得到下面的输出:&nbsp;<br />/*&nbsp;test.c&nbsp;*/&nbsp;<br />int&nbsp;main(void);&nbsp;<br />int&nbsp;my_print(char&nbsp;*string);&nbsp;<br />int&nbsp;my_print2(char&nbsp;*string);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这个输出可以重定向到一个定义函数原型的包含文件里.&nbsp;<br />indent&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;indent&nbsp;实用程序是&nbsp;Linux&nbsp;里包含的另一个编程实用工具.&nbsp;这个工具简单的说就为&nbsp;<br />你的代码产生美观的缩进的格式.&nbsp;indent&nbsp;也有很多选项来指定如何格式化你的源代码.&nbsp;<br />这些选项的更多信息请看indent&nbsp;的指南页,&nbsp;在命令行上键入&nbsp;indent&nbsp;-h&nbsp;.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;下面的例子是&nbsp;indent&nbsp;的缺省输出:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;运行&nbsp;indent&nbsp;以前的&nbsp;C&nbsp;代码:&nbsp;<br />#include&nbsp;&nbsp;&lt;stdio.h&gt;&nbsp;<br />main&nbsp;()&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;my_string[]&nbsp;=&nbsp;&quot;hello&nbsp;there&quot;;&nbsp;<br />&nbsp;&nbsp;my_print&nbsp;(my_string);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_print2(my_string);&nbsp;}&nbsp;<br />my_print&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;printf&nbsp;&nbsp;&nbsp;&nbsp;(&quot;The&nbsp;string&nbsp;is&nbsp;%s\n&quot;,&nbsp;*string);&nbsp;<br />}&nbsp;<br />my_print2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(char&nbsp;*string)&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*string2;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;size,&nbsp;size2,&nbsp;i;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;=&nbsp;strlen&nbsp;(string);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size2&nbsp;=&nbsp;size&nbsp;-1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string2&nbsp;=&nbsp;(char&nbsp;*)&nbsp;malloc&nbsp;(size&nbsp;+&nbsp;1);&nbsp;<br />&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;size;&nbsp;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string2[size2&nbsp;-&nbsp;i]&nbsp;=&nbsp;string[i];&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string2[size]&nbsp;=&nbsp;`\0';&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;printed&nbsp;backward&nbsp;is&nbsp;%s\n&quot;,&nbsp;string2);&nbsp;<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;运行&nbsp;indent&nbsp;后的&nbsp;C&nbsp;代码:&nbsp;<br />#include&nbsp;&nbsp;&lt;stdio.h&gt;&nbsp;<br />main&nbsp;()&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;char&nbsp;my_string[]&nbsp;=&nbsp;&quot;hello&nbsp;there&quot;;&nbsp;<br />&nbsp;&nbsp;my_print&nbsp;(my_string);&nbsp;<br />&nbsp;&nbsp;my_print2&nbsp;(my_string);&nbsp;<br />}&nbsp;<br />my_print&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;is&nbsp;%s\n&quot;,&nbsp;*string);&nbsp;<br />}&nbsp;<br />my_print2&nbsp;(char&nbsp;*string)&nbsp;<br />{&nbsp;<br />&nbsp;&nbsp;char&nbsp;*string2;&nbsp;<br />&nbsp;&nbsp;int&nbsp;size,&nbsp;size2,&nbsp;i;&nbsp;<br />&nbsp;&nbsp;size&nbsp;=&nbsp;strlen&nbsp;(string);&nbsp;<br />&nbsp;&nbsp;size2&nbsp;=&nbsp;size&nbsp;-1;&nbsp;<br />&nbsp;&nbsp;string2&nbsp;=&nbsp;(char&nbsp;*)&nbsp;malloc&nbsp;(size&nbsp;+&nbsp;1);&nbsp;<br />&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;size;&nbsp;i++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;string2[size2&nbsp;-&nbsp;i]&nbsp;=&nbsp;string[i];&nbsp;<br />&nbsp;&nbsp;string2[size]&nbsp;=&nbsp;`\0';&nbsp;<br />&nbsp;&nbsp;printf&nbsp;(&quot;The&nbsp;string&nbsp;printed&nbsp;backward&nbsp;is&nbsp;%s\n&quot;,&nbsp;string2);&nbsp;<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indent&nbsp;并不改变代码的实质内容,&nbsp;而只是改变代码的外观.&nbsp;使它变得更可读,&nbsp;这&nbsp;<br />永远是一件好事.&nbsp;<br />gprof&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;gprof&nbsp;是安装在你的&nbsp;Linux&nbsp;系统的&nbsp;/usr/bin&nbsp;目录下的一个程序.&nbsp;它使你能剖析你&nbsp;<br />的程序从而知道程序的哪一个部分在执行时最费时间.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;gprof&nbsp;将告诉你程序里每个函数被调用的次数和每个函数执行时所占时间的百分比&nbsp;<br />.&nbsp;你如果想提高你的程序性能的话这些信息非常有用.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;为了在你的程序上使用&nbsp;gprof,&nbsp;你必须在编译程序时加上&nbsp;-pg&nbsp;选项.&nbsp;这将使程序在&nbsp;<br />每次执行时产生一个叫&nbsp;gmon.out&nbsp;的文件.&nbsp;gprof&nbsp;用这个文件产生剖析信息.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在你运行了你的程序并产生了&nbsp;gmon.out&nbsp;文件后你能用下面的命令获得剖析信息:&nbsp;<br />gprof&nbsp;&lt;program_name&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;program_name&nbsp;是产生&nbsp;gmon.out&nbsp;文件的程序的名字.&nbsp;<br />----------------------------------------------------------------------------&nbsp;<br />----&nbsp;<br />技巧:&nbsp;gprof&nbsp;产生的剖析数据很大,&nbsp;如果你想检查这些数据的话最好把输出重定向到一&nbsp;<br />个文件里.&nbsp;<br />----------------------------------------------------------------------------&nbsp;<br />----&nbsp;<br />f2c&nbsp;和&nbsp;p2c&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;f2c&nbsp;和&nbsp;p2c&nbsp;是两个源代码转换程序.&nbsp;f2c&nbsp;把&nbsp;FORTRAN&nbsp;代码转换为&nbsp;C&nbsp;代码,&nbsp;p2c&nbsp;把&nbsp;<br />&nbsp;Pascal&nbsp;代码转换为&nbsp;C&nbsp;代码.&nbsp;当你安装&nbsp;GCC&nbsp;时这两个程序都会被安装上去.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果你有一些用&nbsp;FORTRAN&nbsp;或&nbsp;Pascal&nbsp;写的代码要用&nbsp;C&nbsp;重写的话,&nbsp;f2c&nbsp;和&nbsp;p2c&nbsp;对你&nbsp;<br />非常有用.&nbsp;这两个程序产生的&nbsp;C&nbsp;代码一般不用修改就直接能被&nbsp;GCC&nbsp;编译.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果要转换的&nbsp;FORTRAN&nbsp;或&nbsp;Pascal&nbsp;程序比较小的话可以直接使用&nbsp;f2c&nbsp;或&nbsp;p2c&nbsp;不用&nbsp;<br />加任何选项.&nbsp;如果要转换的程序比较庞大,&nbsp;包含很多文件的话你可能要用到一些命令行&nbsp;<br />选项.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在一个&nbsp;FORTRAN&nbsp;程序上使用&nbsp;f2c&nbsp;,&nbsp;输入下面的命令:&nbsp;<br />f2c&nbsp;my_fortranprog.f&nbsp;<br />----------------------------------------------------------------------------&nbsp;<br />----&nbsp;<br />注意:&nbsp;f2c&nbsp;要求被转换的程序的扩展名为&nbsp;.f&nbsp;或&nbsp;a&nbsp;.F&nbsp;.&nbsp;<br />----------------------------------------------------------------------------&nbsp;<br />----&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;要把一个Pascal&nbsp;程序装换为&nbsp;C&nbsp;程序,&nbsp;输入下面的命令:&nbsp;<br />p2c&nbsp;my_pascalprogram.pas&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这两个程序产生的&nbsp;C&nbsp;源代码的文件名都和原来的文件名相同,&nbsp;但扩展名由&nbsp;.f&nbsp;或&nbsp;&nbsp;<br />.pas&nbsp;变为&nbsp;.c.&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.161.11]&nbsp;<br /><a href="00000009.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a><a href="00000011.htm">下一篇</a></h1></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>

⌨️ 快捷键说明

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