C语言中有三种预处理方式:宏定义,文件包含,条件编译。
本次项目文件为机智云对应的串口配置函数,希望实现通过宏定义的修改,而自动识别与之连接的串口,实现串口初始化相关代码,所以借此机会了解了一下条件编译是怎么回事。在很多的开源代码中,例如FATFS,各类RTOS中看到非常多的条件编译内容#if、#elif、#endif等等,这一方式利于程序的移植,调试等。
条件编译常用形式一:
#if 表达式1
程序块1
#elif 表达式2
程序块2
......
#else
程序块n
#endif
其中的表达式和程序块与C的语法一致,下面是部分代码
//根据定义的GIZ_UART自动定义连接wifi模块的串口号
#if GIZ_UART == 1
#define GIZ_UART_PORT USART1
#define GIZ_UART_NVIC USART1_IRQn
#define GIZ_UART_PORT_RCC RCC_APB2Periph_USART1
#warning 当前使用串口1与wifi模块通讯!
#elif GIZ_UART == 2
#define GIZ_UART_PORT USART2
#define GIZ_UART_NVIC USART2_IRQn
#define GIZ_UART_PORT_RCC RCC_APB1Periph_USART2
#elif GIZ_UART == 3
#define GIZ_UART_PORT USART3
#define GIZ_UART_NVIC USART3_IRQn
#define GIZ_UART_PORT_RCC RCC_APB1Periph_USART3
#elif defined(STM32F10X_HD)||defined(STM32F10X_HD_VL)||\
defined(STM32F10X_XL)||defined(STM32F10X_CL) //这四种类型的芯片有UART4
#ifdef GIZ_UART == 4
#define GIZ_UART_PORT

本文介绍了C语言的条件编译,通过实例展示了如何利用条件编译实现机智云项目的串口配置。通过宏定义,可以根据不同的连接串口自动进行初始化代码的选择,从而提高代码的可移植性和调试效率。常见条件编译指令包括#if、#elif、#endif,并提及了#error和#warning用于在构建过程中提供信息。
最低0.47元/天 解锁文章
942

被折叠的 条评论
为什么被折叠?



