Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1909 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] possible de passer une union en parametre a une fonction ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] possible de passer une union en parametre a une fonction ?

n°583084
freds45
Posté le 04-12-2003 à 15:35:09  profilanswer
 

:hello: tous
 
 
Je suis en train de coder une fonction qui sert a creer une structure. Au sein de la structure, il y a une union pour stocker des valeurs. Ce que je souhaiterais, c'est passer une union en parametre a cette fonction... Possible ou pas ? Si oui, le prototype aurait quelle tete ? Si non, idee de remplacement ?
 

Code :
  1. typedef struct s_fait
  2. {
  3. char lib[10];
  4. union toto
  5. {
  6.   int n;
  7.   char *chaine;
  8.   } valeur;
  9.   t_type type;
  10.   int terminal;
  11. } t_fait;


 :jap:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
mood
Publicité
Posté le 04-12-2003 à 15:35:09  profilanswer
 

n°583125
Taz
bisounours-codeur
Posté le 04-12-2003 à 16:26:46  profilanswer
 

oui, c'est possible.
 
NB : en C++, et uniquement en C++, une union peut être anonyme
 
ça fonctionne comme unestructure, donc le passage par pointeur fonctionne, etc. petit exemple
 

Code :
  1. struct Bar
  2. {
  3.   union Baz
  4.   {
  5.     char c[sizeof(int)];
  6.     int i;
  7.   } u;
  8.   double dummy;
  9. };
  10. static void doSomething(struct Bar *r, union Baz z)
  11. {
  12.   r->u = z;
  13. }
  14. #include <stdio.h>
  15. int main()
  16. {
  17.   struct Bar r;
  18.   union Baz z;
  19.   r.dummy = 3.1415;
  20.   z.i = -33;
  21.   printf("dummy = %f\n"
  22.  "i = %d\n",
  23.  r.dummy,
  24.  r.u.i);
  25.   doSomething(&r, z);
  26.   printf("dummy = %f\n"
  27.  "i = %d\n",
  28.  r.dummy,
  29.  r.u.i);
  30.   return 0;
  31. }

n°583159
freds45
Posté le 04-12-2003 à 16:50:45  profilanswer
 

Arf, seulement en C++.. zut :/
J'ai reussi a bricoler une solution de remplacement... c'est pas genial, mais ca marche
En tous cas, merci pour les explications ! :)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°583167
Taz
bisounours-codeur
Posté le 04-12-2003 à 16:58:00  profilanswer
 

bas si tu utilisais une union anonyme, c'est justement que tu ne la manipulerais jamais en tant que telle

n°583171
freds45
Posté le 04-12-2003 à 16:59:27  profilanswer
 

qu'est ce que t'appelles union anonyme ?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°583175
chrisbk
-
Posté le 04-12-2003 à 17:02:21  profilanswer
 

une union sans nom

n°583181
freds45
Posté le 04-12-2003 à 17:05:32  profilanswer
 

ah ok. tt simplement :D


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°583189
Taz
bisounours-codeur
Posté le 04-12-2003 à 17:07:50  profilanswer
 

euh t'as bien compris que le code que j'ai donné, c'est du C ANSI  ?

n°583198
freds45
Posté le 04-12-2003 à 17:11:28  profilanswer
 

oui j'ai compris le truc, mais je vais laisser comme c'est actuellement... C'est peut etre pas tres "propre", mais ca fonctionne :)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°583201
Taz
bisounours-codeur
Posté le 04-12-2003 à 17:14:17  profilanswer
 

ben c'est quoi l'intéret de ta question ?

mood
Publicité
Posté le 04-12-2003 à 17:14:17  profilanswer
 

n°583208
freds45
Posté le 04-12-2003 à 17:16:15  profilanswer
 

Entre temps, j'ai trouve une autre maniere de faire, c'est tout ...


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°583412
jagstang
Pa Capona ಠ_ಠ
Posté le 04-12-2003 à 22:42:48  profilanswer
 

partisant du moindre effort :)

n°583506
matafan
Posté le 05-12-2003 à 02:26:11  profilanswer
 

Pour info certains compilo C autorisent les unions anonymes... Ce qui n'est évidemment pas une raison pour les utiliser puisque c'est interdit en C ANSI.

n°583508
Taz
bisounours-codeur
Posté le 05-12-2003 à 02:35:53  profilanswer
 

pour info tous les compilateurs proposent des fonctionnalités qui leurs sont propres


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] possible de passer une union en parametre a une fonction ?

 

Sujets relatifs
[CMD] Saisie de parametre par l'utilisateur ?css : possible de faire un hover sur un fond ?
problème de création de fonction avec postgresql 7.3.4[PHP] Fonction permettant de télécharger un fichier....
[ASP]nouvelle fenetre + execution automatique d'une fonctionPositionner un pointeur dans un fichier en fonction d'une variable
développer un système d'hébergement P2P, c'est possible ?avec xp pro, est t'il possible d'avoir un serveur asp3 et sqlserveur7
fonction include()[C C++] différence entre une struc et union
Plus de sujets relatifs à : [C] possible de passer une union en parametre a une fonction ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR