- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
 - 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
 - 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
 
                        查看更多
                        
                    
                
                                  目					录 
   前言 
    (一 ) 
    (二 ) 
    (三 ) 
    (四 ) 
   终结篇 
本文档使用	看云	构建                                                                -	2	- 
前言 
前言 
  原文出处 :http///a/1190000004104696 
  作者 :garfileo 
事实上 ,这个世界并没有几份	GNU	m4	教程。 
  这个文档系列是我第一次认真学习	GNU	m4	并进行了一些实践之后的一些总结。由于我在撰写此文的 
  过程中充满着像	m4	展开一个又一个宏一般的耐心 ,因此这篇文章会比较长。在这个信息碎片化的时 
  代 ,似乎没有很多人愿意去看很长的文章 ,大家更喜欢干货。为了节省大家的时间 ,必须声明 ,这个 
  文档系列没有干货 ,它是写给我自己或者那些像我自己的人看的。 
本文档使用	看云	构建                                                                -	3	- 
 (一 ) 
 (一 ) 
什么是宏 
书名是 『宏』 ,它被作者展开为这本书的全部内容。药瓶上的标签是 『宏』 ,将药片从瓶中倾倒出来 ,就 
是这个宏的展开结果。被用的最多的 『宏』 ,应该是	Internet	的超级链接。每当你点击一个超级链接 ,就 
相当于将这个宏展开为网页中的内容。生活中 ,类似的例子还有很多 ,只要你给某种具体的事物贴上了一 
个标签 ,那么这个标签就相当于宏。 
人类非常喜欢给事物贴标签 ,尽管无论他们贴与不贴 ,那些事物本身依然是存在的。在编程中 ,如果你想 
给一段代码贴标签 ,最简单最直接的办法就是使用宏。那些还在用汇编语言编程的人 ,他们是离不开宏 
的 ,因为汇编语言本身就是将一大堆标签贴在了更大的一堆机器代码上。如果所用的编程语言不提供宏功 
能 ,可以用这种编程语言为一段代码制作一个标签——函数 ,不过这种标签就不是宏了 ,而且要付出一些 
性能上的代价 ,因为标签的展开过程被推迟到程序的运行过程。 
C	语言自诞生后 ,只用了	5	年就让汇编语言归隐山林了 ,这可能要归功于	Unix	的成功以及	Dennis 
Ritchie	的忽悠。Steve	Johnson——yacc,	lint,	spell	以及	PCC (Portable	C	Compiler )的作者说 : 
 『Dennis	Ritchie	告诉所有人 ,C	函数的调用开销真的很小很小。于是人人都开始编写小函数 ,搞模块 
化。然而几年后 ,我们发现在	PDF-11	中函数的调用开销依然非常大 ,而	VAX	机器上的代码往往在	CALL 
指令上花费掉	50%	的运行时间。Dennis	对我们撒了谎 !但为时已晚 ,我们已经欲罢不能……』 
现代的编程语言 ,几乎都赞同用函数来取代宏。拥护者们往往会给出一些冠冕堂皇的理由是 ,诸如不必额 
外实现一个宏处理器 ,函数比宏更安全并且更容易调试。事实上 ,他们的理由仅仅是迎合现实而已。如果 
将这些人扔进时空裂缝让他们穿越到	Ken	Thompson	编写	Unix	系统的时代 ,让他们也在一台废弃的 
PDP-7	型号的计算机上写程序。在这种内存只有	8KB	的计算机上 ,那些冠冕堂皇的理由近乎与科幻小说 
等价。函数之所以能够取代宏 ,仅仅是因为	CPU	的计算速度比过去更快了 ,内存比以前更大了 ,牺牲一 
些程序性能 ,让编程工作更容易一些 ,这样比较合算而已。编程语言的性能与机器的性能似乎总是成反比 
的。 
宏被很多人主观的弃用了 ,得益于现代编程语言的表达能力 ,他们似乎几乎不需要用宏 ,于是他们作出结 
论 :宏过时了。事实上 ,宏会永远居于众编程语言之上的 ,因为前者总是能够生成后者。编程专家总是会 
告诉我们 ,要慎用宏。胆子小的程序猿看到宏就躲得远远的 ,以至于他们总觉得那些使用宏的代码是糟糕 
的 ,是不安全的。事实上 ,在编程中 ,若能恰如其分的使用宏 ,可以让代码更加简洁易读 ,特别是对	C	语 
言这种表现力不足的语言。 
例如下面	C	代码中的宏 : 
  #define	DEF_PAIR_OF(dtype)	\ 
  typedef	struct	pair_of_##dtype	{	\ 
  								dtype	first;	\ 
  								dtype	second;	\ 
  }	pair_of_##dtype##_t	 
本文档使用	看云	构建        
                您可能关注的文档
最近下载
- EHS体系程序文件-信息沟通、协商和决议管理程序.docx VIP
 - 高中政治课堂教学应用时事政治策略探究.doc VIP
 - (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
 - 设施农业智能化与现代农业装备产业发展趋势报告.docx
 - “十四五”公路养护发展规划.docx VIP
 - 健康评估(第二版)全套教学课件.pptx
 - 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
 - 2024年贵州省六盘水市中考语文试卷真题(含答案逐题解析).docx
 - CQI-27铸造系统评估表 第二版(2023).xls VIP
 - 银行大堂服务实训(第2版) 课件 项目4 营业中引导营销服务.pdf VIP
 
原创力文档
                        

文档评论(0)