C中结构的前向声明

C中结构的前向声明

本文介绍了C中结构的前向声明?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#include <stdio.h>

struct context;

struct funcptrs{
  void (*func0)(context *ctx);
  void (*func1)(void);
};

struct context{
    funcptrs fps;
};

void func1 (void) { printf( "1
" ); }
void func0 (context *ctx) { printf( "0
" ); }

void getContext(context *con){
    con=?; // please fill this with a dummy example so that I can get this working. Thanks.
}

int main(int argc, char *argv[]){
 funcptrs funcs = { func0, func1 };
   context *c;
   getContext(c);
   c->fps.func0(c);
   getchar();
   return 0;
}

我在这里遗漏了一些东西.请帮我解决这个问题.谢谢.

I am missing something here. Please help me fix this. Thanks.

推荐答案

试试这个

#include <stdio.h>

struct context;

struct funcptrs{
  void (*func0)(struct context *ctx);
  void (*func1)(void);
};

struct context{
    struct funcptrs fps;
};

void func1 (void) { printf( "1
" ); }
void func0 (struct context *ctx) { printf( "0
" ); }

void getContext(struct context *con){
    con->fps.func0 = func0;
    con->fps.func1 = func1;
}

int main(int argc, char *argv[]){
 struct context c;
   c.fps.func0 = func0;
   c.fps.func1 = func1;
   getContext(&c);
   c.fps.func0(&c);
   getchar();
   return 0;
}

这篇关于C中结构的前向声明?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 17:03