- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
预处理命令—宏定义
宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个字符串。这样,在源程序被编译器处理之前,预处理器会将标识符替换成所定义的字符串。根据是否带参数,可以将宏定义分为不带参数的宏定义和带参数的宏定义。
预处理命令—宏定义
.1不带参数的宏定义
在程序中,经常会定义一些常量,比如,3.14、“ABC”。如果这些常量在程序中被频繁使用,难免会出现书写错误的情况。为了避免程序书写错误,可以使用不带参数的宏定义来表示这些常量。
#define标识符字符串
预处理命令—宏定义
脚下留心
宏定义中参数的替换
1、如果宏定义中的字符串出现运算符,需要在合适的位置加上括号,如果不添加括号可能会出现错误。
2、宏定义的末尾不用加分号,如果加了分号,将被视为被替换的字符串的一部分。由于宏定义只是简单的字符串替换,并不进行语法检查,因此,宏替换的错误要等到系统编译时才能被发现。
3、宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在替换时由预处理程序嵌套替换。
多学一招
#undef指令取消宏定义
除了#define之外,相应地还有#undef指令,#undef指令用于取消宏定义。在#define定义了一个宏之后,如果预处理器在接下来的源代码中看到了#undef指令,那么#undef后面这个宏就都不存在了,如例8-2所示。
.2带参数的宏定义
不带参数的宏定义只能完成一些简单的替换操作。如果希望程序在完成替换过程中,能够进行一些更加灵活的操作,例如,根据不同的半径计算圆的面积,这时可以使用带参数的宏定义。
#define标识符(形参表)字符串
预处理命令—宏定义
多学一招
预定义宏
学习了宏定义,下面来看下stdio.h头文件中的五个预定义宏,利用这些宏可以轻松获得程序运行到了何处,有助于编程人员进行程序调试。
预定义宏
说明
__DATE__
定义源文件编译日期的宏
__FILE__
定义源代码文件名的宏
__LINE__
定义源代码中行号的宏
__TIME__
定义源文件编译时间的宏
__FUNCTION__
定义当前所在函数名的宏
文档评论(0)