一个结构体 里面有2个参数 一个是枚举值 和 一个是函数指针 ,写一个函数接收形参是枚举值,通过枚举值找到对应的函数指针
时间: 2024-04-09 13:33:40 浏览: 53
可以使用一个`switch`语句来根据枚举值找到对应的函数指针。下面是一个示例代码:
```c
#include <stdio.h>
// 枚举值
typedef enum {
FUNCTION_A,
FUNCTION_B,
FUNCTION_C
} EnumValue;
// 函数指针类型
typedef void (*FunctionPtr)();
// 结构体
typedef struct {
EnumValue enumValue;
FunctionPtr functionPtr;
} MyStruct;
// 函数指针对应的函数
void functionA() {
printf("This is function A.\n");
}
void functionB() {
printf("This is function B.\n");
}
void functionC() {
printf("This is function C.\n");
}
// 根据枚举值找到对应的函数指针
FunctionPtr findFunction(EnumValue value) {
switch (value) {
case FUNCTION_A:
return &functionA;
case FUNCTION_B:
return &functionB;
case FUNCTION_C:
return &functionC;
default:
return NULL;
}
}
int main() {
MyStruct myStruct;
myStruct.enumValue = FUNCTION_B;
myStruct.functionPtr = findFunction(myStruct.enumValue);
if (myStruct.functionPtr != NULL) {
// 调用函数指针对应的函数
myStruct.functionPtr();
} else {
printf("Invalid enum value.\n");
}
return 0;
}
```
在上面的示例中,我们定义了一个`MyStruct`结构体,其中包含一个枚举值`enumValue`和一个函数指针`functionPtr`。然后,我们定义了三个函数`functionA`、`functionB`和`functionC`,它们分别对应枚举值`FUNCTION_A`、`FUNCTION_B`和`FUNCTION_C`。接下来,我们实现了一个`findFunction`函数,它根据传入的枚举值返回对应的函数指针。在主函数中,我们创建了一个`MyStruct`对象,并将枚举值设置为`FUNCTION_B`,然后通过`findFunction`函数找到对应的函数指针并调用它。
阅读全文