#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  //使用宏来取两数中的最大数

#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 //一个数字的奇数位和偶数位交换,例:2交换后是1
#include 

#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;
}







你可能感兴趣的:(#define 宏的一些使用)