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

  FORUM HardWare.fr
  Programmation
  C

  Initialisation d'une strucutre contenant une union

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Initialisation d'une strucutre contenant une union

n°910689
kineton
Posté le 29-11-2004 à 21:13:55  profilanswer
 

Bonjour,
 
Je me retrouve avec un probleme d'initialisation d'une structure contenant une union : j'arrive a initaliser une variable ayant pour type une strucutre tant que j'utilise pas d'union dans cette structure.
 
Voici la definition de ma structure :

Code :
  1. typedef struct{
  2. union
  3. {
  4. u08  entier[4];
  5. float  flottant;
  6. }  abc;
  7. float  min;
  8. float  max;
  9. float  inc;
  10. }param


 
Et voici comment j'initialise ma variable :

Code :
  1. param ABC = {0,1,300,1};


 
Et voici les warning que me donne mon compilateur :

Code :
  1. warning: missing braces around initializer
  2. warning: (near initialization for `ABC')
  3. warning: large integer implicitly truncated to unsigned type


 
Merci de la precieuse aide que vous pourriez me donner.
 
Max

mood
Publicité
Posté le 29-11-2004 à 21:13:55  profilanswer
 

n°910708
theshockwa​ve
I work at a firm named Koslow
Posté le 29-11-2004 à 21:33:15  profilanswer
 

il me semble que c'est ca :

Code :
  1. TParam p = { {{0,0,0,0}}, 1, 300, 1};

n°910726
kineton
Posté le 29-11-2004 à 21:59:15  profilanswer
 

je vien d'essayer ta suggestion theShOcKwAvE, mais ca me retourne la meme erreur.
 
j'ai meme essayé avec des parentheses, des crochets ..., rien a faire !!!

n°910769
blurk
Posté le 29-11-2004 à 22:15:06  profilanswer
 

Ça devrait être bon. Chez moi ça marche sans avertissements avec :
 
param ABC = { { {0.0} }, 1, 300, 1};
 
ou :
 
param DEF = { { {0, 0, 0, 0} }, 1, 300, 1};

n°910798
kineton
Posté le 29-11-2004 à 22:24:47  profilanswer
 

Je suis vraiment naze, dans mon exemple chez moi j'utilisais un tableau (ABC[1]) du coup fallait juste rajouter un couche d'accolade a vos solutions.
 
Merci beaucoup,
 
Max

n°910844
cris56
Posté le 29-11-2004 à 22:37:26  profilanswer
 

blurk a écrit :

Ça devrait être bon. Chez moi ça marche sans avertissements avec :
 
param ABC = { { {0.0} }, 1, 300, 1};
 


 
fais gaffe c'est pas standard, une union doit etre initialisée avec une valeur du type du premier membre

n°912498
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-12-2004 à 21:33:53  profilanswer
 

kineton a écrit :

Bonjour,
 
Je me retrouve avec un probleme d'initialisation d'une structure contenant une union : j'arrive a initaliser une variable ayant pour type une strucutre tant que j'utilise pas d'union dans cette structure.
 


Ceci fonctionne:


typedef unsigned int u08;
 
typedef struct
{
   union
   {
      u08 entier[4];
      float flottant;
   }
   abc;
   float min;
   float max;
   float inc;
}
param;
 
int main (void)
{
   param ABC =
   {
      {{0, 1, 300, 1}},
      0,0,0
   };
 
   return 0;
}

n°912760
HelloWorld
Salut tout le monde!
Posté le 02-12-2004 à 11:27:02  profilanswer
 

Hello Emmanuel et bienvenue ici ! :hello:
Note que tu as la balise cpp au lieu de code qui colorise ton code.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°912808
Taz
bisounours-codeur
Posté le 02-12-2004 à 12:26:45  profilanswer
 

[:roi]
j'ai plus qu'à fermer ma gueule

n°912821
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-12-2004 à 12:56:26  profilanswer
 

HelloWorld a écrit :

Hello Emmanuel et bienvenue ici ! :hello:
Note que tu as la balise cpp au lieu de code qui colorise ton code.


Merci de ton accueil.
 
Je préfère éviter les balises 'cpp' ou alors, il faudrait m'indiquer un moyen de désactiver la numérotation des lignes que je trouve peu pratique. J'ai en effet l'habitude de copier/coller le code posté pour le tester. Si il faut retirer les numéros de lignes (j'ai fait l'essai) à chaque fois, je risque d'abandonner assez vite...
 
Nota : j'ai utilisé 'fixed' et non 'code'.

Message cité 1 fois
Message édité par Emmanuel Delahaye le 02-12-2004 à 12:58:53

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 02-12-2004 à 12:56:26  profilanswer
 

n°912822
Lam's
Profil: bas.
Posté le 02-12-2004 à 12:58:23  profilanswer
 

Emmanuel Delahaye a écrit :

Si il faut retirer les numéros de lignes (j'ai fait l'essai) à chaque fois, je risque d'abandonner assez vite...


 
Nan, tu cliques sur le bouton edit du message où se trouve le code, et tu copies/colles le contenu du message entre les balises cpp. C'est pas génial, mais c'est pas la mort non plus...
 
M'enfin, bienvenue ici. Fais pas gaffe à Taz, c'est un étudiant qu'on a pour quelques mois, il apprend encore. :whistle:


Message édité par Lam's le 02-12-2004 à 12:59:32
n°1663131
Olivier51
Posté le 26-12-2007 à 19:32:22  profilanswer
 

Grrr, j'arrive pas à utiliser ma structure :

Code :
  1. typedef struct {
  2.  int type;
  3.  union {
  4.   int dwData;
  5.   char* strData;
  6.  } data;
  7. } Param;
  8. Param params0 = { 1, { "test" } };


 

error: invalid conversion from 'const char*' to 'int'


 
J'ai essayé aussi :

Code :
  1. Param params0 = { .type = 1, .data = { "" }; };


Pas mieux :

error: expected primary-expression before '.' token
error: expected primary-expression before '.' token
error: expected primary-expression before '{' token
error: expected `}' before '{' token
error: expected ',' or ';' before '{' token

Message cité 1 fois
Message édité par Olivier51 le 26-12-2007 à 20:18:33
n°1663141
morph
Posté le 26-12-2007 à 19:52:04  profilanswer
 

Emmanuel Delahaye a écrit :


Merci de ton accueil.
 
Je préfère éviter les balises 'cpp' ou alors, il faudrait m'indiquer un moyen de désactiver la numérotation des lignes que je trouve peu pratique. J'ai en effet l'habitude de copier/coller le code posté pour le tester. Si il faut retirer les numéros de lignes (j'ai fait l'essai) à chaque fois, je risque d'abandonner assez vite...
 
Nota : j'ai utilisé 'fixed' et non 'code'.


 
avec un double click sur le code les lignes disparaissent

n°1663170
matafan
Posté le 26-12-2007 à 21:16:54  profilanswer
 

morph a écrit :


 
avec un double click sur le code les lignes disparaissent


Je sais pas si tu as remarqué mais son message date d'il y a 3 ans.

n°1663478
Olivier51
Posté le 27-12-2007 à 20:21:57  profilanswer
 

Olivier51 a écrit :

Grrr, j'arrive pas à utiliser ma structure :

Code :
  1. typedef struct {
  2.  int type;
  3.  union {
  4.   int dwData;
  5.   char* strData;
  6.  } data;
  7. } Param;
  8. Param params0 = { 1, { "test" } };


 

error: invalid conversion from 'const char*' to 'int'


 
J'ai essayé aussi :

Code :
  1. Param params0 = { .type = 1, .data = { "" }; };


Pas mieux :

error: expected primary-expression before '.' token
error: expected primary-expression before '.' token
error: expected primary-expression before '{' token
error: expected `}' before '{' token
error: expected ',' or ';' before '{' token



 :bounce:

n°1663554
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-12-2007 à 03:25:10  profilanswer
 

matafan a écrit :


Je sais pas si tu as remarqué mais son message date d'il y a 3 ans.


N'empêche que je viens de découvrir le truc du double click, alors, pour moi, ce n'est pas inutile !
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1663555
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-12-2007 à 03:25:58  profilanswer
 

morph a écrit :


 
avec un double click sur le code les lignes disparaissent


Merci pour cette astuce bien pratique.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1663565
Taz
bisounours-codeur
Posté le 28-12-2007 à 08:28:49  profilanswer
 

Emmanuel Delahaye a écrit :


Merci pour cette astuce bien pratique.
 


Les Joce bugs^Wfeatures faut pas chercher à comprendre


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

  Initialisation d'une strucutre contenant une union

 

Sujets relatifs
Probleme de switch et variable contenant du texteInitialisation d'un champ NUMAUTO dans ACCESS
Initialisation d'un vectorInitialisation d'un char*, malloc ou pas ?
[C][DOS] Generer un .txt contenant l'arboresence du DDRéaliser une union avec SQL SERVER 2000
[C] Possible de faire un extern sur une union de struct [RESOLU] ?Fichier .bat contenant des commandes msdos, faire un retour chariot??
Pb de popup contenant un form et de communication av sa fenetre parentW3C : comment valider un page contenant un objet Flash ?
Plus de sujets relatifs à : Initialisation d'une strucutre contenant une union


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