ST芯片中动态包含头文件代码解释

*===========================================================================*/
/* Create and include board definition file.                                 */
/*===========================================================================*/

/* Define board initialization function */
/**
 * @brief Concatenates two strings
 * @param \_a\_  first string
 * @param \_b\_  second string
 */
#define concatenate(_a_,_b_)   _a_ ## _b_

/**
 * @brief Builds the board initialization function
 * @param \_a\_  board name
 */
#define BOARD_INIT_FUNC(_a_)   concatenate(_a_,_init())

/* Define board configuration file */
/**
 * @brief Macro to convert a parameter into a string
 * @param \_x\_  name to be converted
 */
#define stringify(_x_)         #_x_

/**
 * @brief Macro to create the board header file
 * @param \_a\_  file basename
 */
#define BOARD_FILE(_a_)        stringify(_a_.h)

/**
 * @brief Includes board configuration file
 * @param BOARD_NAME  name of the board
 */
#if defined(BUILD_PLATFORM_BOARD)
#include BOARD_FILE(BOARD_NAME)
#endif

这段代码是用于动态地创建和包含特定的板载设备定义文件和配置文件。让我们逐步解释每个部分的作用:

1. **concatenate(_a_, _b_) 宏定义**:
   - 这个宏用于将两个输入参数 `_a_` 和 `_b_` 连接起来。在代码中,它的作用是用来组合形成函数名。
   - 示例:如果 `_a_` 是 `board_name`,`_b_` 是 `_init()`,那么 `concatenate(_a_, _b_)` 将会生成 `board_name_init()`。

2. **BOARD_INIT_FUNC(_a_) 宏定义**:
   - 这个宏用于构建板载设备初始化函数的名称。
   - 它利用了 `concatenate` 宏,将传入的参数 `_a_` 与 `_init()` 结合起来形成函数名。
   - 示例:如果传入的 `_a_` 是 `my_board`,那么 `BOARD_INIT_FUNC(my_board)` 将被展开为 `my_board_init()`。

3. **stringify(_x_) 宏定义**:
   - 这个宏用于将传入的参数 `_x_` 转换成字符串字面量。
   - 示例:如果 `_x_` 是 `my_board`,则 `stringify(my_board)` 将被展开为 `"my_board"`。

4. **BOARD_FILE(_a_) 宏定义**:
   - 这个宏用于生成包含特定文件的文件名的字符串。
   - 它使用了 `stringify` 宏,将传入的 `_a_` 与 `.h` 结合起来形成头文件名的字符串字面量。
   - 示例:如果 `_a_` 是 `my_board`,那么 `BOARD_FILE(my_board)` 将被展开为 `"my_board.h"`。

5. **#if defined(BUILD_PLATFORM_BOARD) 和 #include BOARD_FILE(BOARD_NAME)**:
   - 这部分代码是条件编译和包含文件的部分。
   - `#if defined(BUILD_PLATFORM_BOARD)` 检查是否定义了 `BUILD_PLATFORM_BOARD` 宏。
   - 如果定义了,就会包含 `BOARD_FILE(BOARD_NAME)` 所展开的文件名,这里 `BOARD_NAME` 应该是预定义或者通过其他方式定义的板名称。

总结来说,这些宏定义和条件编译结合起来,可以根据预定义的板名称动态地生成和包含相应的设备定义文件和配置文件,使代码能够根据不同的板载设备进行灵活的配置和编译。

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值