C语言中带参宏定义

本文详细介绍了C语言中带参宏定义的使用,包括注意事项和常见问题。例如,宏定义中形参与宏名之间不能有空格,形参不分配内存,形参可以是表达式等。通过示例展示了带括号的重要性,以及宏定义与函数在处理同一表达式时可能产生的不同结果。同时,提到了宏定义可以用于组合多个语句的情况。
摘要由CSDN通过智能技术生成
#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 &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值