2011-03-14 19 views
11

he definido una estructura opaca y API relacionadas como esto:c typedef (ed) puntero opaco

typedef struct foo foo; 
foo *create_foo(...); 
delete_foo(foo *f); 

no soy capaz de definir la estructura en mi archivo c. Da error de redefinición

typedef struct foo { 
    int implementation; 
}foo; 

Puedo usar foo en el archivo c sin typedef pero quiero que el typedef (es decir, utilizar directamente como foo *). ¿Hay alguna manera?

Respuesta

18

Ya tiene el typedef en su encabezado, así que incluya eso y defina struct foo en la implementación sin el typedef.

foo.h:

typedef struct foo foo; 
foo *create_foo(...); 
delete_foo(foo *f); 

foo.c:

#include <foo.h> 

struct foo { int implementation; }; 
/* etc. */ 
+0

verdadera. Puedo usarlo en el archivo c sin necesidad de volver a escribirlo. Qué tonto de mí hacer tal pregunta. Gracias por hacerme darme cuenta de eso. :) – Manish