C预处理器 #define

C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简单点说,C预处理器就是一个文本替换工具 。C预处理器是在实际编译器编译之前对代码进行处理。

#define 不仅可以为类型定义别名,也能为数值定义别名;
#define 语句是由预编译器进行处理的。

语法规定

C中所有的预处理命令都必须以井号(#)开头,且必须是第一个非空字符。

分类

C预处理器 #define_第1张图片

实例

#define 定义宏

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */

说明:以上语句目的是告诉C预处理器,将代码中所有的GPIO_Pin_0 字符串都替换为后面的((uint16_t)0x0001);目的是提高程序的可读性。有了宏定义,我们在写代码时,就可以使用符号来代替繁琐的数字串。

C预处理器 #define_第2张图片

带参宏定义与无参宏定义

#include 
#define GPIO_Mode_AIN 3	//无参宏定义,相当于替换作用
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN)) //带参宏定义在这里相当于是一个判断的功能

int main(void)
{
	if (IS_GPIO_MODE(GPIO_Mode_AIN))
	{
		printf("宏定义输出为真");
	}
	else
		printf("宏定义输出为假");
}

以上代码输出结果为:

宏定义输出为真
#include 
#define GPIO_Mode_AIN 3	//无参宏定义,相当于替换作用
#define GPIO_Mode_Out_PP 2
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN)) //带参宏定义在这里相当于是一个判断的功能

int main(void)
{
	if (IS_GPIO_MODE(GPIO_Mode_Out_PP))
		printf("宏定义输出为真");
	else
		printf("宏定义输出为假");
}

以上代码输出结果为:

宏定义输出为假

你可能感兴趣的:(C语言,c语言)