Casting un vide pointeur vers une struct

J'ai commencé à me sentir à l'aise avec le C et ensuite, j'ai couru dans la conversion de type. Si j'ai de la suite définie dans un *.h fichier

struct data {
    int value;
    char *label;
};

et ce dans un autre *.h fichier

# define TYPE      void*

Comment puis-je lance le vide pointeur vers la structure de sorte que je peux utiliser une variable de TYPE "val" qui est passé dans les fonctions? Par exemple, si je veux utiliser la valeur de TYPE val points, comment dois-je le jeter alors que je peux passer cette valeur à l'autre des fonctions?

#define TYPE void* est une mauvaise idée. Il devrait au moins être un typedef à la place. Envisager ce qui se passerait dans la déclaration suivante: TYPE x, y; ou const TYPE x;.
Aussi, si vous avez affaire à void* pointeurs et C, vous n'avez pas besoin de faire un cast explicite. C permet void* pointeurs implicitement cast: void* p = ...; struct data* val = p;.
Je suis d'accord que c'est une mauvaise idée, mais ce n'est pas mon idée, donc je dois aller avec elle. Ainsi que, lorsque TYPE val est passé dans une fonction comme un vide, pointeur, je peux simplement déclarer struct data* temp = val; puis passe temp à une fonction et je devrais être capable d'utiliser ensuite temp->valeur?
Oui, vous pouvez ensuite utiliser temp->value.
Merci, votre réponse était simple et utile. Si elle a été posté dans la section réponse, je lui donnerais un upvote.

OriginalL'auteur user1852050 | 2013-02-18