【发布时间】:2021-02-27 07:16:14
【问题描述】:
我正在研究通过函数指针运行函数的问题,函数指针是结构的变量。我尝试制作一个小代码,但我无法构建它。 我得到的错误如下: 请查看下面的代码。 main 函数中的第一条语句是错误的原因。 我是 C 的新手。谢谢你的帮助。
#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;
}
【问题讨论】:
-
如何你的代码“失败”了?
-
我无法构建它。
-
为什么?你得到什么错误?请edit您的问题包括完整和完整的错误输出复制粘贴为文本。
-
我已经编辑了这个问题。请审查它。我期望在执行代码后,打印语句应该打印 5。
-
如果
int16_t不是int的类型定义,这会导致未定义的行为。函数调用表达式的类型必须与函数定义的类型相匹配