文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>预处理命令--宏定义

预处理命令--宏定义

时间:2010-11-29  来源:licong0527

在说关于有关宏定义的知识前,要先说一个概念。

预处理命令:在编译源程序前先对源程序进行处理。
           用#表示该行为编译预处理命令。
在C语言编程中加入一些编译预处理命令可以提高编程效率,加快编译速度。
注:预处理命令不是C语言的一部分,因此每条编译预处理命令不需要以分号来结束。

宏定义就属于预处理命令的一种。那么,什么是宏呢?
宏:c语言标准允许在程序中用一个标识符来表示一个字符串。标识符就是宏名。
宏替换:宏替换就是宏定义。在编译预处理中,将程序中所有的宏名用相应的字符串来替换,这个过程称为宏替换。

宏分为两种:
1、无参数宏   #define 标识符 字符串
2、带参数宏   #define 标识符(形参表) 字符串

因为无参数宏比较简单,所以重点说一下带参数宏。

e.g.  #define MUL(x,y) x*y

* 首先,说一下应该要注意的问题或者说是容易犯错的地方。
  1、宏替换后没有;(分号),因为它不是语句;
  2、宏名与形参表的圆括号之间不能有空格,否则会导致错误;
     如上面的例子,MUL与(之间不能有空格。
  3、在宏替换中,字符串内的形参最好用括号括起来,以避免错误。
     如上面的例子,x*y应写为(x)*(y)
     因为宏定义的过程本质是替换,所以若x=a+1,y=b+1,那么,按原来的,
     就为 a+1*b+1,而不是我们想表示的(a+1)*(b+1)了。
  因此,我个人习惯将宏定义叫做宏替换。

* 其次,要说明带参数宏定义与函数的区别,因为二者比较相像,很容易搞混,所以在这里说明一下。
  1、带参数的宏的形参不是变量,不分配内存空间,无需说明数据类型;
     函数的形参是变量,分配内存空间,在函数定义时要指明参数的数据类型。

  2、预处理程序认为有参数的宏的实参是字符串,并用字符串去替换形参;
     函数则会计算实参的值,再去传给形参。

  3、宏替换会在编译时使编译时间变长,而运行时间不会;
     函数调用则会占用运行时间。


注:以上内容是参考人民邮电出版社的《LINUX C编程实战》,由童永清老师和吴伟民老师编著的
  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载