赞
赏
C++ 源程序中允许用一个标识符来表示一个 字符串,称为 “宏”。被定义为宏的标识符称为 “宏名”。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为宏替换或宏展开。
宏定义是由源程序中的宏定义命令完成的。宏替换是由预处理程序自动完成的。在 C 语言中,宏定义分为有参数和无参数两种。
#define identify expression
参数 | 描述 |
---|---|
#define |
定义宏使用的关键字。 |
identify |
宏的标识符,也就是宏名。 |
expression |
该宏所代表的表达式或者常量值。 |
#define PI 3.14
我们定义了一个宏 PI,其代表的常量值为 3.14,以后,我们需要使用 3.14 的地方,可以直接使用 PI 来代替。
#undef
命令终止宏定义的作用域。定义宏常量
#include <iostream>
using namespace std;
#define PI 3.14
#define N 20
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
int r = 10;
float area = 0;
area = PI * r * r;
int arr[N];
cout << "Area = " << area << " Arr Size = " << sizeof(arr) << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先定义了一个宏 PI,代表常量值 3.14,接着,我们再次定义了一个常量 N,代表常量 20,接着,我们分别使用了 PI 宏来计算圆的面积。
使用宏 N 来定义了一个 数组,其中 N 代表了数组的长度。
定义宏常量
#include <iostream>
using namespace std;
#define INT_PTR int*
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
int a = 1024;
INT_PTR ptr = &a;
cout << "a = " << a << " ptr = " << ptr << " *ptr = " << *ptr << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们定义了一个宏 INT_PTR,该宏代表的是 int 的指针类型,接着,我们使用了该宏定义了一个 int 类型 的 指针 变量并保存了 int 类型变量 a 的地址。
C++ 源程序中允许用一个标识符来表示一个字符串,称为 “宏”。被定义为宏的标识符称为 “宏名”。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换,这称为宏替换或宏展开。