主观题:电机启停 - C/C++ 函数与抽象
下面两行代码源自于某工业自动化产品。在该产品中,CPU的C端口的第9脚用于控制X0电机的起停。GPIO_SetBits(GPIOC,GPIO_Pin_9)函数将C口第9脚置位▲,即将该脚置为1(高电平),从而启动电机;相应地,GPIO_ResetBits(GPIOC,GPIO_Pin_9)则将C口第9脚复位▲,即将该脚置为0(低电平),从而停止电机运转。
c++
#define X0_ONLINE GPIO_SetBits(GPIOC,GPIO_Pin_9)
#define X0_OFFLINE GPIO_ResetBits(GPIOC,GPIO_Pin_9)
请思考作者为什么要定义上述预处理宏▲,而不是直接在代码中使用GPIO_SetBits()或者GPIO_ResetBits()函数?
在本书第12章,我们会说明使用预处理宏的风险,实践中我们建议初学者不要使用预处理宏。请你设计恰当的内联函数替代上述两个宏。
说明:内联函数仍然通过调用GPIO_SetBits()和GPIO_ResetBits()实现相应功能;这两个函数源自某个特定的单片机共享库,在读者的计算机上肯定没有这两个函数,不要试图运行你编写的代码。
请同学直接文字回答,包括简答及两个内联函数的设计。
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)

答案:
c++
#define X0_ONLINE GPIO_SetBits(GPIOC,GPIO_Pin_9)
#define X0_OFFLINE GPIO_ResetBits(GPIOC,GPIO_Pin_9)
请思考作者为什么要定义上述预处理宏▲,而不是直接在代码中使用GPIO_SetBits()或者GPIO_ResetBits()函数?
在本书第12章,我们会说明使用预处理宏的风险,实践中我们建议初学者不要使用预处理宏。请你设计恰当的内联函数替代上述两个宏。
说明:内联函数仍然通过调用GPIO_SetBits()和GPIO_ResetBits()实现相应功能;这两个函数源自某个特定的单片机共享库,在读者的计算机上肯定没有这两个函数,不要试图运行你编写的代码。
请同学直接文字回答,包括简答及两个内联函数的设计。
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)

答案: