MST

星途 面试题库

面试题:C语言中#undef的基础应用

在C语言中,假设有宏定义`#define PI 3.14159`,请编写一段代码,在使用该宏计算圆面积后,使用`#undef`清除该宏,然后再尝试使用`PI`,观察编译器的反应并解释原因。
36.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 宏定义PI
#define PI 3.14159

int main() {
    double radius = 5.0;
    double area;

    // 使用宏计算圆面积
    area = PI * radius * radius;
    printf("圆的面积: %.2f\n", area);

    // 清除宏
    #undef PI

    // 尝试再次使用PI,这里会导致编译错误
    // area = PI * radius * radius; // 取消注释此行,编译器会报错

    return 0;
}

编译器的反应:当取消注释area = PI * radius * radius;这行代码时,编译器会报错,提示PI未定义。原因是#undef指令用于移除一个宏定义,在执行#undef PI后,PI这个宏就不再存在于预处理器的符号表中,后续代码就无法识别PI,因此会导致编译错误。