📅  最后修改于: 2023-12-03 14:40:27.480000             🧑  作者: Mango
在C语言中,#define
和#undef
是预处理器指令,用于定义和取消定义宏。
#define
指令用于定义一个宏。语法如下:
#define 宏名 替换文本
宏名可以是任何标识符,替换文本可以是任何文本。替换文本可以是算术表达式、字符串字面量、函数调用等。
下面是一些例子:
#define PI 3.14159
#define MSG "Hello, world!"
#define MAX(x, y) ((x) > (y) ? (x) : (y))
上述三个宏分别定义了一个常量、一个字符串,以及一个函数式宏。
在代码中使用宏时,预处理器会将宏名替换为其对应的替换文本。例如:
float radius = 10.0;
float circumference = 2 * PI * radius;
printf("%s\n", MSG);
int x = 10, y = 20;
int max = MAX(x, y);
在程序执行前,预处理器会将代码中的宏替换为其对应的替换文本。上述代码实际执行的是:
float radius = 10.0;
float circumference = 2 * 3.14159 * radius;
printf("%s\n", "Hello, world!");
int x = 10, y = 20;
int max = ((x) > (y) ? (x) : (y));
#undef
指令用于取消已定义的宏。语法如下:
#undef 宏名
例如:
#define DEBUG
#ifdef DEBUG
printf("Debug information\n");
#endif
#undef DEBUG
在上述代码中,#ifdef
指令用于判断宏是否已经定义。如果已经定义,则输出调试信息。然后,使用#undef
指令取消宏的定义,使其不能再使用。