宏定义在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”,被定义为“宏”的标识符称为“宏名”. 如: 代码语言:javascript 复制 #define 梅西 Lionel Andrés Messi Cuccitini 以上就是一个宏定义,该定义是用"梅西"来表示"Lionel Andrés Messi Cuccitini" 其中,"梅西"这个标识符被称为宏名. 而...
宏定义是属于预处理指令,因此发生在预处理阶段,也就是在源代码编译之前。而函数是发生在程序运行期间的。5.3 内存空间 宏定义只是简单的文本替换,把替换列表中的内容取代标识符的位置,替换完就会删除所有对应的标识符。因此,宏定义的参数是不需要分配空间的。函数每次调用的时候,系统都会给形式参数重新分配一块...
宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能①的其中一种。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率②。 1. #define命令 #define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换...
实际上,我们可以通过定义宏的方式给C语言符号添加别名,从而改变C语言的语法。例如,对于习惯使用Pascal的begin和end(而不是C语言的{和})的程序员,可以定义下面的宏: 代码语言:javascript 复制 #defineBEGIN{#defineEND} 我们甚至可以发明自己的语言。例如,我们可以创建一个LOOP“语句”,来实现一个无限循环: #define ...
C语言宏C语言宏 1.宏定义: 宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能的其中一种①。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。 2.格式: 简单宏定义 格式:#define <宏名/标识符> <字符串> ...
宏既然可以定义出来,那么也可以取消定义,可以使用#undef来取消已有的宏定义: 可以看到在使用#undef之后,直接不认识了。 当然除了我们自己可以去定义之外,系统也为我们提供了一些预定义的宏: 这里只列出了一部分。 环境: GCC 11.4.0 VSCode 1.93.1
注意:使用do{…}while(0)构造后的宏定义不会受到大括号、分号等的影响,总是会按你期望的方式调用运行。 #运算符 #的作用就是将#后边的宏参数进行字符串的操作,也就是将#后边的参数两边加上一对双引号使其成为字符串。例如a是一个宏的形参,则替换文本中的#a被系统转化为"a",这个转换过程即为字符串化。
宏名通常以大写字母命名,替换文本可以是任何有效的 C 语言代码片段,宏的定义从 #define 开始,直到指令行结束或者遇到行继续符 \。 例如,下面是一个简单的宏定义示例: #definePI3.14159 1. 这个宏定义了一个名为 PI 的宏,将其替换为对应的数值 3.14159。
除了定义普通的宏之外,C语言中还有一种特殊的宏定义“#define MAX(a, b) ((a) > (b) ? (a) : (b))”,这种宏定义被称为宏函数,可以实现简单的函数功能。宏函数通常使用括号将参数括起来,以确保表达式的正确性。 另外,C语言中还有一些系统预定义的宏,如“__FILE__”表示当前文件名,“__LINE__”表...