#define 宏的一些使用

#define

#define 定义标识符

语法: 

          #define name stuff

#define 定义宏

#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。

下面是宏的申明方式:

#define name( parament-list ) stuff

其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。

注意:

参数列表的左括号必须与name紧邻。

#define 替换

在程序中扩展#define定义符号和宏时,需要涉及几个步骤。

1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换。
2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替换。
3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。

注意:

1. 宏参数和#define 定义中可以出现其他#define定义的变量。但是对于宏,不能出现递归。
2. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。


以下是一些使用代码:

#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h> //使用宏来取两数中的最大数

#define MAX(a,b)\
	((a>b)?(a):(b))

int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个数:\n");
	scanf("%d%d",&a,&b);
	printf("两个数中的最大数是:%d\n",MAX(a,b));
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS 0
#include <stdio.h>//一个数字的奇数位和偶数位交换,例:2交换后是1
#include <windows.h>

#define REVERSE(input)\
	((((input) & 0x55555555) << 1) | (((input) & 0xaaaaaaaa) >> 1))

int main()
{
	int input = 0;
	printf("请输入一个数:\n");
	scanf("%d",&input);
	printf("这个数的奇数位和偶数位交换后得:%d\n",REVERSE(input));
	return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值