在介绍C语言的宏定义之前,需要介绍一下预处理。
什么是预处理呢?所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言的一个重要的功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕后自动进入对源程序的编译。
程序中以“#”开头的预处理命令,如包含命令#include,宏定义命令#define等。在源程序中这些命令都放在函数之外,一般放在源文件的前面,称为预处理部分。宏定义就是预处理的一种。
C语言中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在预编译处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。
C语言的“宏”分为有参数和无参数两种,下面对这两种“宏”分别进行讨论。
1、无参宏定义
无参宏的宏名后不带参数。
其定义的一般形式为:#define 标识符 字符串
“标识符”为所定义的宏名,“字符串”可以是常数、表达式、格式串等。
例如:
#define M (x*x+2*x+1)
它的作用是指定标识符M来代替表达式(x*x+2*x+1)。在编写源程序时,所有的(x*x+2*x+1)都可以由M代替。而对源程序作编译时,将先由预处理程序进行宏代换,即用(x*x+2*x+1)表达式去置换所有的宏名M,然后再进行编译。
例如:
#include <stdio.h>
#define M (x*x+2*x+1)
main()
{
int sum,x;
printf("input a number: ");
scanf("%d",&x);
sum=3*M+
C语言宏详解
最新推荐文章于 2025-03-26 03:30:00 发布