在预处理程序语句中使用C函数

1 c c++ microcontroller stm32 precompiler

我正在stm32f4芯片上编写一个c ++应用程序,它有几个要控制的IO.我的一位同事建议为所有这些IO制作预处理器语句,以使代码更具可读性.

例如:

#define FAN_ON     GPIO_SetBits(GPIOD, GPIO_Pin_0);
#define FAN_OFF    GPIO_ResetBits(GPIOD, GPIO_Pin_0);
Run Code Online (Sandbox Code Playgroud)

这样就好了,如果没有,为什么?我还没有那么多的微控制器经验,但我读到在预处理器语句中不应该使用分号,我也不确定在预编译器语句中使用函数是否是一种好的风格?

谢谢您的帮助!

unw*_*ind 5

这在理论上很好,但你应该避免使用分号.

最好将代码包装在一个虚拟循环中:

#define FAN_ON    do { GPIO_SetBits(GPIOD, GPIO_Pin_0); } while(false)
Run Code Online (Sandbox Code Playgroud)

这使得宏的行为类似于单个语句.