学科分类
目录
C语言

取消宏定义

#undef指令用于取消宏定义。在#define定义了一个宏之后,可以使用#undef取消该宏定义,如果预处理器在编译源代码时,发现#undef指令,那么#undef后面这个宏就会被取消,无法生效了。

#undef取消宏定义的语法格式如下:

#undef 宏名称

接下来通过一个案例演示#undef指令的使用,如例1所示。

例1 undef.c

 1  #include <stdio.h>
 2  #define PI 3.14      //定义宏PI
 3  int main() 
 4  {
 5    printf("%f\n", PI);  //引用宏PI
 6    #undef PI       //取消宏PI
 7    printf("%f\n", PI);  //再次引用宏PI
 8    return 0;
 9  }

运行例1,程序报错,如图1所示。

图1 例1运行结果

从图1中可以看出,程序报出“未定义的标识符PI”的错误。这是因为在例1中,第2行代码定义了宏PI,第6行中使用#undef指令取消宏PI,此时,第7行代码使用宏PI时,宏PI已经不存在了,所以程序编译出错。

image-20200521134743332多学一招:预定义宏

stdio.h标准库定义了五个关于源程序编译信息的宏,利用这些宏可以轻松获得程序运行信息,有助于编程人员进行程序调试。这五个预定义宏的名称及含义如表1所示。

表1 stdio.h标准库关于源程序编译信息的五个预定义宏

预定义宏 说明
DATE 定义源文件编译日期的宏
FILE 定义源代码文件名的宏
LINE 定义源代码中行号的宏
TIME 定义源文件编译时间的宏
FUNCTION 定义当前所在函数名的宏
点击此处
隐藏目录