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が宣言および定義されている場所.iはそれらを見ることができません。

最初にCの構造を調べる必要があると思います

于 2012-04-07T16:42:26.213 に答える
0

あなたの質問は明確ではありませんが、私が見つけることができるものはわかります。

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

ここでは、関数ポインタ メンバfunc0およびを含む構造体を宣言していますfunc1coreJT次に、初期化子リストを介して変数を定義しようとしています:

static const mainJT coreJT = {
  core_func0,
  core_func1
};

core_func0しかし、 or 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 に答える