C:指向返回枚举的函数的函数指针

格迪韦拉

在 C 语言中,使用 IAR 编译器用于 Cortex uC。假设您有三个函数,例如:

Type_enum_1 get_parameter_alpha(void);
Type_enum_2 get_parameter_beta(void);
Type_enum_3 get_parameter_gamma(void);

我想知道是否可以声明一个可以分配给上述每个函数的函数指针。我试过使用:

uint8_t (*getter_ptr)(void)

或者

void (*getter_ptr)(void)

但编译器无法接受赋值

getter_ptr = get_parameter_alpha

有针对这个的解决方法吗?

谢谢

思慕梦迪

返回类型是函数签名的一部分,因此有编译器不把枚举拖泥带水,你将无法声明函数指针类型,覆盖了所有三项功能,只要Type_enum_1Type_enum_2Type_enum_3不正好是相同的。

但是,您可以做的是利用enums 基本上是查看整数的不同方式这一事实,因此作为一种解决方法,您可以实现三个代理函数

int get_parameter_alpha_proxy(void) { return (int)get_parameter_alpha(); }
int get_parameter_beta_proxy(void) { return (int)get_parameter_beta(); }
int get_parameter_gamma_proxy(void) { return (int)get_parameter_gamma(); }

这三个可以分配给一个类型的点int (*getter_ptr)(void)- 但是,如果所涉及的三个枚举具有重叠/不明确的值(大多数情况下都是这种情况),则返回的整数值的解释将不简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章