lenguaje estructuras ejemplos dev arreglo array anidadas c struct declaration forward

ejemplos - estructuras en c pdf



declaraciĆ³n directa de una estructura en C? (2)

#include <stdio.h> struct context; struct funcptrs{ void (*func0)(context *ctx); void (*func1)(void); }; struct context{ funcptrs fps; }; void func1 (void) { printf( "1/n" ); } void func0 (context *ctx) { printf( "0/n" ); } 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; }

Yo me estoy perdiendo algo aqui. Por favor ayúdame a arreglar esto. Gracias.


Prueba esto

#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/n" ); } void func0 (struct context *ctx) { printf( "0/n" ); } 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; }


Una estructura (sin un typedef) a menudo necesita (o debería) estar con la palabra clave struct cuando se usa.

struct A; // forward declaration void function( struct A *a ); // using the ''incomplete'' type only as pointer

Si escribedef su estructura puede omitir la palabra clave struct.

typedef struct A A; // forward declaration *and* typedef void function( A *a );

Tenga en cuenta que es legal reutilizar el nombre de la estructura

Intente cambiar la declaración hacia adelante a esto en su código:

typedef struct context context;