函数指针存在于 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();