📜  C语言中的#define与#undef

📅  最后修改于: 2021-05-26 00:10:53             🧑  作者: Mango

在本文中,我们将讨论C语言中#define#undef预处理程序之间的区别。

预处理器:

  • 预处理程序是在编译之前执行的程序。
  • 它仅注意到开始的语句。
  • 称为预处理器指令。
  • 每个预处理指令必须位于其自己的行上。
  • #后面的单词称为预处理器命令。

#定义:

#define指令定义了一个标识符和一个字符序列(一组字符),每次在源文件中遇到该标识符时,它将替换该标识符。

句法:

例子:

程序1:

下面是说明#define用法的C程序:

C
// C program illustrating the use of
// #define
#include 
#define PI 3.14
  
// Driver Code
int main()
{
    int r = 4;
    float a;
  
    a = PI * r * r;
    printf("area of circle is %f", a);
  
    return 0;
}


C
// C program to find the product of
// two numbers using #define
  
#include 
#define PRODUCT(a, b) a* b
  
// Driver Code
int main()
{
    printf("product of a and b is "
           "%d",
           PRODUCT(3, 4));
  
    return 0;
}


C
// C program to illustrate the use
// of #undef in a program
#include 
#define PI 3.14
#undef PI
  
// Driver Code
int main()
{
    int r = 6;
    float a;
    a = PI * r * r;
  
    printf("area of circle is %f", a);
  
    return 0;
}


输出:
area of circle is 50.240002

解释:

  • 在此的示例PI是宏名称,字符序列是3.14。
  • 程序运行时,编译器将首先检查#define命令,并将PI分配为3.14。
  • 现在,在整个程序中,无论编译器在哪里看到PI字,它都将用3.14替换它。

程式2:

下面是使用#define的两个数字的C程序打印产品:

C

// C program to find the product of
// two numbers using #define
  
#include 
#define PRODUCT(a, b) a* b
  
// Driver Code
int main()
{
    printf("product of a and b is "
           "%d",
           PRODUCT(3, 4));
  
    return 0;
}
输出:
product of a and b is 12

解释:

  • 在此示例中,定义了一个宏名称作为乘积,并将两个自变量作为ab传递,并将char序列作为这两个自变量的乘积给出。
  • 当编译器在print语句中看到宏名称时,它将用a和b的乘积替换宏名称,并给出答案作为其乘积。

#undef:

#undef预处理程序指令用于未定义的宏。

句法:

程序3:

下面是C程序,用于说明程序中#undef的用法:

C

// C program to illustrate the use
// of #undef in a program
#include 
#define PI 3.14
#undef PI
  
// Driver Code
int main()
{
    int r = 6;
    float a;
    a = PI * r * r;
  
    printf("area of circle is %f", a);
  
    return 0;
}

输出:

说明:在此示例中,当使用#undef时,它将删除#define命令,并且该宏将变得未定义,并且编译器将显示错误。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。