模块化编程

typedef enum
{
STATE_M_INIT, /*!< bus is in initial state. */
} MasterRTUstate_e;

#define  STATE_M_INIT  0

枚举与宏的区别,在于宏定义后是全局的,无论是在C文件还是H文件,不能重复定义。而宏可以重复定义在两个h文件中,不冲突。

 

函数指针类型如下

typedef int8_t ( *SerialDMA_Receive_f ) (const uint8_t *pdat, const uint8_t len);和宏一样,可以重复。

 

但是函数在C文件定义后,无论是否在H文件中声明,都是全局的,其他c和h文件在定义同名函数都是重复定义。

如果想定义同名函数,只能定义局部的,在不同c文件定义相同名字函数,必须加static。

不像C++具有多态性。

以上都是在ARMCC(keil)编译器中验证。后续不同编译器gcc有待验证。

posted on 2021-11-14 19:48  长缨在手_521  阅读(36)  评论(0)    收藏  举报