C语言基础教程之预约义和宏解决
define看起来很炫酷!C语言基础教程之预解决和宏定义
C语言预解决器
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
C语言预解决器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C语言预解决器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预解决。我们将把 C 预解决器(C Preprocessor)简写为 CPP。
所有的预解决器命令都是以井号(#)开头。它必需是第一个非空字符,为了加强可读性,预解决器指令应从第一列开始。下面列出了所有重要的预解决器指令:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
预解决器实例
分析下面的实例来了解不同的指令。
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
预约义宏
ANSI C 定义了许多宏。在编程中您可以用这些宏,但是不能直接修改这些预约义的宏。
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
在test.c中有如下代码:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
执行后:File :test.c
Date :Aug 18 2018
Time :14:51:04
Line :7
预解决器运算符
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
C 预解决器提供了下列的运算符来帮助您创立宏:宏延续运算符()一个宏通常写在一个单行上。但是假如宏太长,一个单行容纳不下,则用宏延续运算符()。例如:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
字符串常量化运算符(#)在宏定义中,当需要把一个宏的参数转换为字符串常量时,则用字符串常量化运算符(#)。在宏中用的该运算符有一个特定的参数或者参数列表。例如:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
当上面的代码被编译和执行时,它会产生下列结果:Carole and Debra: We love you!标记粘贴运算符(##)宏定义内的标记粘贴运算符(##)会合并两个参数。它允许在宏定义中两个独立的标记被合并为一个标记。例如:

当上面的代码被编译和执行时,它会产生下列结果:token34 = 40,是怎样发生的,由于这个实例会从编译器产生下列的实际输出:printf (“token34 = %d”, token34);这个实例演示了 token##n 会连接到 token34 中,在这里,我们用了字符串常量化运算符(#)和标记粘贴运算符(##)。defined() 运算符预解决器 defined 运算符是使用在常量表达式中的,使用来确定一个标识符能否已经用 #define 定义过。假如指定的标识符已定义,则值为真(非零)。假如指定的标识符未定义,则值为假(零)。下面的实例演示了 defined() 运算符的使用法:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
当上面的代码被编译和执行时,它会产生下列结果:Here is the message: You wish!参数化的宏CPP 一个强大的功能是可以用参数化的宏来模拟函数。例如,下面的代码是计算一个数的平方:
假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062??
在用带有参数的宏之前,必需用 #define 指令定义。参数列表是括在圆括号内,且必需紧跟在宏名称的后边。宏名称和左圆括号之间不允许有空格。

假如有心要学习的菜鸟也可以来C/C++学习乐园:747821062
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » C语言基础教程之预约义和宏解决