用\#开头加关键词构成一条预编译指令,该指令将在编译前对源代码进行转换
宏的处理
\#define
使用\#define 定义一个宏,用法如下:
#define MAX_DATA_ARR 128
#define LED1 Pin_1
\#undef
使用\#undef 取消定义宏,用法如下:
#undef MAX_DATA_ARR
#undef LED1
宏的定义判断
\#ifdef
使用\#ifdef 检查一个宏是否存在,存在就执行下面的语句,用法如下:
#define HELLO 0
#ifdef HELLO
printf("Hello World!");
#endif
\#ifndef
使用\#ifndef 检查一个宏是否存在,不存在就执行下面的语句,用法如下:
//#define HELLO 0
#ifndef HELLO
printf("Hello World!");
#endif
宏的数值判断
\#if
使用\#if 检查一个宏是数值是否为需要值,是就执行下面区块的语句,用法如下:
#define AC 1
#if AC == 1
printf("AC = 1");
#endif
\#elif
使用\#elif 检查从\#if到\#else的宏是数值是否为需要值,是就执行下面区块的语句,用法如下:
#define AC 2
#if AC == 1
printf("AC = 1");
#elif AC == 2
printf("AC = 2");
#endif
\#else
无满足\#if和\#elif的值就执行\#else 下面区块的语句,用法如下:
#define AC 1
#if AC == 1
printf("AC = 1");
#elif AC == 2
printf("AC = 2");
#else
printf("AC = ?");
#endif
\#endif
使用\#endif 结束一块宏选择区块,用法如下:
#define AC 1
#define BC 2
#if AC == 1
printf("AC = 1");
#endif
#if BC == 1
printf("BC = 1");
#endif
注:如果使用判断时宏未定义将等价于0
\#if NOT_DEFINE <=> \#if 0
如果定义了却未赋值将报出[Error] \#if with no expression,在于\#if 不但会检查是否定义且会检查值,如果只需要检查定义请使用\#ifdef。