#include <stdio.h>
#include <string.h>
void func1 (void) { printf( "1\n" ); }
void func0 (void) { printf( "0\n" ); }
typedef struct {
void (*func0)(void);
void (*func1)(void);
}mainJT;
static const mainJT coreJT = {
core_func0,
core_func1
};
mainJT currJT;
int main()
{
currJT=coreJT;
coreJT.core_func0();
getchar();
return 0;
}
请帮我修复错误,我相信我会犯一些明显的错误。感谢。
答案 0 :(得分:0)
我看到很多错误: 例如:初始化结构的正确方法是: / *将类型点定义为具有整数成员x,y * /
的结构typedef struct {
int x;
int y;
} point;
/* Define a variable p of type point, and initialize all its members inline! */
point p = {1,2};
所以你的部分代码是:
mainJT coreJT = {
core_func0;
core_func1;
};
完全错误。
还在哪里声明和定义了core_func1 core_func0函数.i看不到它们。
我猜您首先需要通过structures in c
答案 1 :(得分:0)
你的问题不太清楚,但我看到了我能找到的东西。
typedef struct {
void (*func0)(void);
void (*func1)(void);
} mainJT;
在这里,您声明了一个带有函数指针成员func0
和func1
的结构体。然后,您尝试通过初始化列表定义coreJT
变量:
static const mainJT coreJT = {
core_func0,
core_func1
};
但这不起作用,因为没有名为core_func0
或core_func1
的函数!
你也试着打电话
coreJT.core_func0();
这也是错误的,因为你的结构没有名为core_func0
的成员。
对于可能的解决方案,请尝试重命名您的函数:
void core_func1 (void) { printf( "1\n" ); }
void core_func0 (void) { printf( "0\n" ); }
并通过
调用您的函数指针coreJT.func0();