Caster un int en void* [C] - C - Programmation
Marsh Posté le 30-03-2004 à 22:39:33
pourri. dangereux, mauvais.
le truc, c'est de faire 1 enum qui donne le type de la donnée + union pour les données
Marsh Posté le 30-03-2004 à 22:53:21
Code :
|
Marsh Posté le 30-03-2004 à 22:53:31
Taz a écrit : pourri. dangereux, mauvais. |
union pour les données .... tu veux dire que je dois connaitre d'avance tous les types que je peux inserer dans ma liste c'est ça ?
EDIT : Waou tu viens de le tapper à l'instant ?
Merci ca dvrait m'aider, je vais essayé de l'implémenter comme ça
Marsh Posté le 30-03-2004 à 22:55:24
Slayne a écrit : |
oui, bien entendu. à moins que tu fasse une liste de void*, mais à ce moment, là c'est à l'utilisateur de tout gérer, c'est à dire de donner un pointeur vers sa donnée lors de l'ajout dans la liste, et plus tard quand il la demande, de récupérer un void* et de se souvenir de qu'il y avait vraiment derrière.
donc ça veut dire que tu aurais un truc du genre
Code :
|
[/cpp]
Marsh Posté le 30-03-2004 à 22:58:10
Slayne a écrit : |
oui est sans une seule erreur de compil du premier coup
Marsh Posté le 30-03-2004 à 23:05:19
Taz a écrit : oui est sans une seule erreur de compil du premier coup |
Waou ... quand je serai grand je serai comme toi
Ah bah zut je suis plus vieux que toi Tu programmes beaucoup ?
Marsh Posté le 30-03-2004 à 23:06:52
pas tellement, je retiens juste les syntaxes, bibliothèques, normes, spécifications assez facilement ... mais avec un peu d'habitude, ça se fait naturellement
Marsh Posté le 31-03-2004 à 00:07:16
Taz a écrit : oui est sans une seule erreur de compil du premier coup |
On ne va pas en dire autant pour le français
Marsh Posté le 31-03-2004 à 06:30:14
ReplyMarsh Posté le 31-03-2004 à 08:24:54
Reply
Marsh Posté le 30-03-2004 à 22:35:38
Je souhaite creer une liste. Jusque là, rien d'original, mais je souhaite que dans chaque cellule de ma liste il puisse y avoir aussi bien un entier qu'une chaine de caractère ou autre (oui je sais ca ressemble fortement à de l'objet Mais j'ai besoin de le faire en C).
Bref chaque cellule prend un void * et un pointeur sur la cellule suivante.
Et pour rentrer un entier dans une cellule, je le caste en void *.
Par exemple :
int i = 5;
macellule->valeur = (void*)i;
Mais est ce un cast "valable" ? J'ai testé mon programme, ca compile, mais quand je rentre la suite d'entier 3 12 7 dans ma liste, celle ci affiche (134520856 ) au lieu de (3 7 12 )
Le probleme viendrai il du cast ?