函数指针存在于 C 中的结构中
Function Pointer present inside a structure in C
我正在研究 运行 通过函数指针实现函数的问题,函数指针是结构体的变量。我尝试制作一个小代码,但我无法构建它。
我收到的错误如下:
请查看下面的代码。 main 函数中的第一条语句是错误的原因。
我是 C.Thank 你的新手,感谢你的帮助。
#include <stdio.h>
#include <stdlib.h>
#include<stdint.h>
typedef int16_t (*reset_start_f)(void); //typedef used for function Pointer
int ThermMgrSvc_Reset(void)
{
int retVal;
retVal=5;
return retVal;
}
typedef struct
{
reset_start_f reset; // function pointer
}module_function_t;
static const module_function_t MODULE_TABLE[]=
{
{(reset_start_f)ThermMgrSvc_Reset},
};
int main()
{
int x2= MODULE_TABLE[0].(*reset)(); // This statement causing Error
printf("x2= %d\n",x2);
return 0;
}
此语法无效:
int x2= MODULE_TABLE[0].(*reset)();
因为结构访问运算符 .
必须紧跟字段名称。解引用运算符需要在整个子表达式之前:
int x2= (*MODULE_TABLE[0].reset)();
或者,由于函数指针在调用时被隐式取消引用,您可以完全删除 *
:
int x2= MODULE_TABLE[0].reset();
我正在研究 运行 通过函数指针实现函数的问题,函数指针是结构体的变量。我尝试制作一个小代码,但我无法构建它。
我收到的错误如下:
#include <stdio.h>
#include <stdlib.h>
#include<stdint.h>
typedef int16_t (*reset_start_f)(void); //typedef used for function Pointer
int ThermMgrSvc_Reset(void)
{
int retVal;
retVal=5;
return retVal;
}
typedef struct
{
reset_start_f reset; // function pointer
}module_function_t;
static const module_function_t MODULE_TABLE[]=
{
{(reset_start_f)ThermMgrSvc_Reset},
};
int main()
{
int x2= MODULE_TABLE[0].(*reset)(); // This statement causing Error
printf("x2= %d\n",x2);
return 0;
}
此语法无效:
int x2= MODULE_TABLE[0].(*reset)();
因为结构访问运算符 .
必须紧跟字段名称。解引用运算符需要在整个子表达式之前:
int x2= (*MODULE_TABLE[0].reset)();
或者,由于函数指针在调用时被隐式取消引用,您可以完全删除 *
:
int x2= MODULE_TABLE[0].reset();