0
#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;
}

请帮我修复错误,我确信我犯了一些明显的错误。谢谢。

4

2 回答 2

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 在哪里声明和定义。我看不到它们。

我想你首先需要通过c 中的结构

于 2012-04-07T16:42:26.213 回答
0

你的问题不是很清楚,但我知道我能找到什么。

typedef struct {
  void (*func0)(void);
  void (*func1)(void);
} mainJT;

在这里,您要声明一个带有函数指针成员func0func1. 然后你试图coreJT通过初始化列表定义一个变量:

static const mainJT coreJT = {
  core_func0,
  core_func1
};

但这不起作用,因为没有调用函数core_func0or core_func1!你也试着打电话

coreJT.core_func0();

这也是不正确的,因为您的结构没有 name 的成员core_func0


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

void core_func1 (void) { printf( "1\n" ); }
void core_func0 (void) { printf( "0\n" ); }

并通过调用你的函数指针

coreJT.func0();

于 2012-04-07T16:44:07.640 回答