Ayuda c

C

No tenía muy claro donde poner este post así que no se si irá aqui. El caso es que tengo lo siguiente en el el .h (no moficable ... es una práctica de la uni).

typedef void RDIR;

Ahora bien, esto, segun dice el enunciado se hace para 'esconder' los valores del tipo en varias implementaciones y que los clientes del servicio no se enteren de que hay por debajo (por ejemplo para implementar un serivicio de dos formas distintas)... ahora bien .. no se como narices redeclarar ese tipo en el .c que voy a utilizar para implementar el servicio ...

¿Alguna idea?

maRc

Lo que hace el typedef es definir sinónimos. Por ejemplo, como lo tienes en el fichero ese, puedes utilizar indistintamente void (que sería lo normal) o RDIR (como esta puesto) para referirte a variables del tipo void.

Para utilizarlo en tu programa, solamente debes de escribr typedef void RDIR en él, y utilizar luego RDIR en lugar de void. Si el fichero .h lo vas a utilizar como cabecera, no se si hace falta que pongas el typedef en tu programa: La solución es compilar a ver si funciona o no ;)

C

Vale, ya tengo la solución :P

Por si alguien le interesaba se usa como un puntero a cualquier cosa asi que

typedef void RDIR;

struct mensaje
{
int myvar1;
char myvar2;
}

void main()
{
RDIR = (mensaje *) malloc(sizeof(mensaje));
}

(Creo) :P

maRc

RDIR no lo has declarado en ningún sitio, solo has puesto que sea sinónimo de void. Para almacenar la dirección donde se ha reservado el espacio del malloc, tendrías que declarar un puntero de tipo mensaje, y luego asignarlo al espacio.

Para declarar el puntero, tienes que hacerlo así struct mensaje *puntero;.

O sea:
struct mensaje *puntero;
puntero = (mensaje *) malloc(sizeof(mensaje));

A lo mejor se me ha ido mucho la pinza, pero creo que es así.

C

Si bueno... es que lo que quería poner era

RDIR *directorio

directorio = (mensaje *) malloc(sizeof(mensaje));

Usuarios habituales