#include<stdio.h>
/*
1.带参宏定义中,宏名和形参表之间不能有空格出现
2.宏定义中不存在值传递,它只是一个符号的替换过程
3.带参宏定义中,形参不分配内存空间,因此不必做类型定义
*/
/*
#define MAX(a,b) (a>b)?a:b
void main(void)
{
int x,y,max;
printf("Plasy input two numbers :");
scanf("%d %d",&x,&y);
max=MAX(x,y);
printf("The max is: %d\n\n",max);
}
*/
/*
4.在宏定义中的形参是标识符,而宏调用中的实参可以是表达式
*/
/*
#define SAY(y) (y) //y可以是一个表达式
void main()
{
int i=0;
char say[]="hello word!";
while(say[i])
{
say[i]=SAY(say[i]);
i++;
}
printf("\n\t%s\n\n",say);
}
*/
/*
5.在宏定义中,字符串内的形参通常要用括号括起来
以避免出错
*/
/*
//例1:
#define SQ(y) (y)*(y)
//#define SQ(y) y*y (注释部分为不带括号)
void main()
{
int a,sq;
printf("input a number:");
scanf("%d",&a);
sq=SQ(a+1); // sq=(a+1)*(a+1)
// sq=SQ(a+1); // sq=a+1*a+1 (不带括号)
printf("sq = %d\n",sq);
}
//例2:
#define SQ(y) (y)*(y)
//#define SQ(y) ((y)*(y))
void main()
{
int a,sq;
printf("input a number:");
scanf("%d",&a);
sq=160/SQ(a+1); // sq=160/(a+1)*(a+1)
p
C语言中带参宏定义
最新推荐文章于 2025-05-15 19:16:38 发布