Function 在C中使用函数指针时出错 #包括 #包括 void func1(void){printf(“1\n”);} void func0(void){printf(“0\n”);} 类型定义结构{ 无效(*func0)(无效); 无效(*func1)(无效); }mainJT; 静态常量mainJT coreJT={ 核心函数0, 核心功能1 }; mainJT currJT; int main() { currJT=coreJT; coreJT.core_func0(); getchar(); 返回0; }

Function 在C中使用函数指针时出错 #包括 #包括 void func1(void){printf(“1\n”);} void func0(void){printf(“0\n”);} 类型定义结构{ 无效(*func0)(无效); 无效(*func1)(无效); }mainJT; 静态常量mainJT coreJT={ 核心函数0, 核心功能1 }; mainJT currJT; int main() { currJT=coreJT; coreJT.core_func0(); getchar(); 返回0; },function,pointers,Function,Pointers,请帮我纠正错误,我肯定我犯了一些明显的错误。谢谢。我看到很多错误: 例如:初始化结构的正确方法是: /*将类型点定义为具有整数成员x,y的结构*/ #include <stdio.h> #include <string.h> void func1 (void) { printf( "1\n" ); } void func0 (void) { printf( "0\n" ); } typedef struct { void (*func0)(void); voi

请帮我纠正错误,我肯定我犯了一些明显的错误。谢谢。

我看到很多错误: 例如:初始化结构的正确方法是: /*将类型点定义为具有整数成员x,y的结构*/

#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;
}
因此,您的代码部分是:

typedef struct {
   int    x;
   int    y;
} point;

/* Define a variable p of type point, and initialize all its members inline! */
point p = {1,2};
完全错误

声明和定义的函数core\u func1 core\u func0在哪里。我看不到它们


我想你首先需要检查一下你的问题不太清楚,但我知道我能找到什么

mainJT coreJT = {
  core_func0;
  core_func1;
};
在这里,您将声明一个具有函数指针成员
func0
func1
的结构。然后,您试图通过初始值设定项列表定义
coreJT
变量:

typedef struct {
  void (*func0)(void);
  void (*func1)(void);
} mainJT;
但这不起作用,因为没有名为
core\u func0
core\u func1
的函数! 你也试着打电话

coreJT.core_func0()

这也是不正确的,因为您的结构没有名为
core\u func0
的成员


对于可能的解决方案,请尝试重命名函数,如下所示:

static const mainJT coreJT = {
  core_func0,
  core_func1
};
并通过指针调用函数

coreJT.func0()


请让我知道如何重命名函数。如果您可以发布完整的代码,这会有所帮助。谢谢。@user1128265我刚才看了你的另一个问题,这可能是基本问题,所以请阅读我的第一个问题谢谢Anthales,这很有帮助!
void core_func1 (void) { printf( "1\n" ); }
void core_func0 (void) { printf( "0\n" ); }