C语言编译预处理之带参宏定义

 2023-03-15 19:04:10  阅读 0

一、概述

在讲解文件包含之前我们先将上篇文章的宏定义进行一个扩展和巩固

带参数的宏定义的基本形式如下

带参数宏定义的一般形式为:      

#define 宏名(形参表) 字符串 带参数宏调用的一般形式为:  

宏名(实参表);

接下来我们看一段代码对印象进行加深

//FileName: chap9_7.c
#include <stdio.h>
#define  MAX(a,b)   (a>b)?a:b
int main()
{
     int x,y,max;  
     printf("input a number: ");
     scanf("%d%d",&x,&y);
     max=MAX(x,y);
     printf("%d\n",max);
}  

程序运行结果如下: input a number:23  56↙ 56

分析完这段代码我们看另一个:

//FileName: chap9_8.c
#include <stdio.h>
#define SQ(y)  (y)*(y)
int main()
{
       int a,sq;
       printf("input a number: "); 
       scanf("%d",&a);
       sq=SQ(a+1);
       printf("%d\n",sq);
}

程序运行结果如下: input a number:3↙ 16

最后一个总结代码:

//FileName: chap9_9.c
#include <stdio.h>
int SQ(int y)
{
 return((y)*(y));
}
int main( )
{
 int i=1;
 while(i<=5)
  printf("%d\n",SQ(i++));
 return 0;
}

程序运行结果如下:

1

4

9

16

25

那么我们在使用带参数的·宏定义方式需要注意什么那?

①其实从之前的三段代码中我们不难看出带参宏定义中,宏名和形参表之间是不能够有空格的出现。

②在C语言初级学习阶段我们在使用带参宏定义的时候,形式参数是不分配内存单元的,那么也就不必作类型定义。而宏调用中的实参又包含具体的值。所以我们通常要用它们去代换形参,因此必须作类型说明。

 

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码