J'ai un problème avec l'utilisation d'une variable globale de type
union définie comme telle dans un header:
extern union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
En voulant rajouter ma déclaration de variable dans mon source:
union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
J'obtient ça:
error C2371: 'unionVAR' : redefinition; different basic types
.\union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Romain
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yves ROMAN
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable : Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type
union définie comme telle dans un header:
extern union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
En voulant rajouter ma déclaration de variable dans mon source:
union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
J'obtient ça:
error C2371: 'unionVAR' : redefinition; different basic types
.union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable
:
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ;
extern T_UNION16 unionVAR ;
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable : Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
panpan
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
En fait, je ne peux pas modifier le header dans lequel est défini
l'union et donc je ne peux pas définir le type correspondant.
J'aimerais donc trouver comment faire ma déclaration de façon à ne pas
avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type
union définie comme telle dans un header:
extern union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
En voulant rajouter ma déclaration de variable dans mon source:
union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
J'obtient ça:
error C2371: 'unionVAR' : redefinition; different basic types
.union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la
variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ;
extern T_UNION16 unionVAR ;
et dans le .c :
T_UNION16 unionVAR ;
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Romain
En fait le message précédent est de Romain
Romain vient de nous annoncer :
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
En fait le message précédent est de Romain
Romain vient de nous annoncer :
En fait, je ne peux pas modifier le header dans lequel est défini l'union et
donc je ne peux pas définir le type correspondant. J'aimerais donc trouver
comment faire ma déclaration de façon à ne pas avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type
union définie comme telle dans un header:
extern union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
En voulant rajouter ma déclaration de variable dans mon source:
union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
J'obtient ça:
error C2371: 'unionVAR' : redefinition; different basic types
.union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la
variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ;
extern T_UNION16 unionVAR ;
et dans le .c :
T_UNION16 unionVAR ;
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Yves ROMAN avait énoncé :
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Si quelqu'un pouvait m'aider, merci.
Peut-être s'assurer d'avoir le même type pour les 2 déclarations de la variable
Dans union.h declarer un type pour l'union :
typedef union ..... T_UNION16 ; extern T_UNION16 unionVAR ;
et dans le .c : T_UNION16 unionVAR ;
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Emmanuel Delahaye
In 'fr.comp.lang.c', Romain wrote:
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Il faut nommer les structures ou faire un typedef.
extern union unionVAR { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; } bi; T_BYTEFLD cr; } unionVAR;
#ifdef __cplusplus } #endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
typedef union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; } bi; T_BYTEFLD cr; } unionVAR_u;
extern unionVAR_u unionVAR;
#ifdef __cplusplus } #endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
/* data.c */ #include "data.h"
unionVAR_u unionVAR;
/* main.c */ #include "data.h"
#include <stdio.h>
int main (void) { unionVAR.bi.champ1 = 1;
return 0; }
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Romain <romainveillerot.no@spam.free.fr> wrote:
Bonjour,
J'ai un problème avec l'utilisation d'une variable globale de type
union définie comme telle dans un header:
extern union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
En voulant rajouter ma déclaration de variable dans mon source:
union {
struct {
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}bi;
T_BYTEFLD cr;
} unionVAR;
J'obtient ça:
error C2371: 'unionVAR' : redefinition; different basic types
.union.h(268) : see declaration of 'unionVAR'
Il faut nommer les structures ou faire un typedef.
extern union unionVAR
{
struct
{
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}
bi;
T_BYTEFLD cr;
}
unionVAR;
#ifdef __cplusplus
}
#endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
typedef union
{
struct
{
unsigned int champ1:1;
unsigned int champ2:1;
unsigned int champ3:1;
unsigned int champ4:1;
unsigned int champ5:1;
unsigned int champ6:1;
unsigned int champ7:1;
unsigned int champ8:1;
unsigned int champ9:1;
unsigned int champ10:1;
unsigned int champ11:1;
unsigned int champ12:1;
unsigned int champ13:1;
unsigned int champ14:1;
unsigned int champ15:1;
unsigned int champ16:1;
}
bi;
T_BYTEFLD cr;
}
unionVAR_u;
extern unionVAR_u unionVAR;
#ifdef __cplusplus
}
#endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
/* data.c */
#include "data.h"
unionVAR_u unionVAR;
/* main.c */
#include "data.h"
#include <stdio.h>
int main (void)
{
unionVAR.bi.champ1 = 1;
return 0;
}
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
J'ai un problème avec l'utilisation d'une variable globale de type union définie comme telle dans un header: extern union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
En voulant rajouter ma déclaration de variable dans mon source: union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; }bi; T_BYTEFLD cr; } unionVAR;
J'obtient ça: error C2371: 'unionVAR' : redefinition; different basic types .union.h(268) : see declaration of 'unionVAR'
Il faut nommer les structures ou faire un typedef.
extern union unionVAR { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; } bi; T_BYTEFLD cr; } unionVAR;
#ifdef __cplusplus } #endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
typedef union { struct { unsigned int champ1:1; unsigned int champ2:1; unsigned int champ3:1; unsigned int champ4:1; unsigned int champ5:1; unsigned int champ6:1; unsigned int champ7:1; unsigned int champ8:1; unsigned int champ9:1; unsigned int champ10:1; unsigned int champ11:1; unsigned int champ12:1; unsigned int champ13:1; unsigned int champ14:1; unsigned int champ15:1; unsigned int champ16:1; } bi; T_BYTEFLD cr; } unionVAR_u;
extern unionVAR_u unionVAR;
#ifdef __cplusplus } #endif
#endif /* guard */
/* Guards added by GUARD (c) AETA 2000-2003 Jun 25 2003 Ver. 1.6 */
/* data.c */ #include "data.h"
unionVAR_u unionVAR;
/* main.c */ #include "data.h"
#include <stdio.h>
int main (void) { unionVAR.bi.champ1 = 1;
return 0; }
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Eddahbi Karim
Le 2004-04-13, Romain a martirisé son clavier pour dire:
En fait le message précédent est de Romain
Je te le dis calmement avant que tu ne te fasses tuer par quelqu'un d'autre de ce newsgroup qui n'aura pas apprécié la blague :
Evite de "quoter" 200 lignes pour en poster une...
Voilà ;-)
--
Remove 'dot' INVALID to mail me EN-FR : dot->point :P
Le 2004-04-13, Romain <nospam@yo.gt> a martirisé son clavier pour dire:
En fait le message précédent est de Romain
Je te le dis calmement avant que tu ne te fasses tuer par quelqu'un
d'autre de ce newsgroup qui n'aura pas apprécié la blague :
Evite de "quoter" 200 lignes pour en poster une...
Voilà ;-)
--
Remove 'dot' INVALID to mail me
EN-FR : dot->point :P
Le 2004-04-13, Romain a martirisé son clavier pour dire:
En fait le message précédent est de Romain
Je te le dis calmement avant que tu ne te fasses tuer par quelqu'un d'autre de ce newsgroup qui n'aura pas apprécié la blague :
Evite de "quoter" 200 lignes pour en poster une...
Voilà ;-)
--
Remove 'dot' INVALID to mail me EN-FR : dot->point :P
Marc Boyer
panpan wrote:
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Tu ne peux pas :-( En tout cas, pas proprement. La seule chose que tu peux faire, c'est un cast. Mais ça devient dur à maintenir puisque à la moindre modification du header, on doit reporter le changement dans ton code. Donc, quelles sont les exigences de maintenance de ton code ? Pourquoi ne peux-tu pas modifier ce header ? Au minimum, il faudrait ajouter des assertions de compilation qui vérifient que la taille de ton type et d'une variable avec le type de l'en-tête soient identiques, que les tailles des membres le sont aussi, etc.
Marc Boyer -- La contractualisation de la recherche, c'est me donner de l'argent pour faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce que je sais faire, je le fais sans moyens...
panpan wrote:
En fait, je ne peux pas modifier le header dans lequel est défini
l'union et donc je ne peux pas définir le type correspondant.
J'aimerais donc trouver comment faire ma déclaration de façon à ne pas
avoir cette erreur.
Tu ne peux pas :-( En tout cas, pas proprement.
La seule chose que tu peux faire, c'est un cast. Mais
ça devient dur à maintenir puisque à la moindre modification
du header, on doit reporter le changement dans ton code.
Donc, quelles sont les exigences de maintenance de ton code ?
Pourquoi ne peux-tu pas modifier ce header ?
Au minimum, il faudrait ajouter des assertions de compilation
qui vérifient que la taille de ton type et d'une variable avec
le type de l'en-tête soient identiques, que les tailles des
membres le sont aussi, etc.
Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...
En fait, je ne peux pas modifier le header dans lequel est défini l'union et donc je ne peux pas définir le type correspondant. J'aimerais donc trouver comment faire ma déclaration de façon à ne pas avoir cette erreur.
Tu ne peux pas :-( En tout cas, pas proprement. La seule chose que tu peux faire, c'est un cast. Mais ça devient dur à maintenir puisque à la moindre modification du header, on doit reporter le changement dans ton code. Donc, quelles sont les exigences de maintenance de ton code ? Pourquoi ne peux-tu pas modifier ce header ? Au minimum, il faudrait ajouter des assertions de compilation qui vérifient que la taille de ton type et d'une variable avec le type de l'en-tête soient identiques, que les tailles des membres le sont aussi, etc.
Marc Boyer -- La contractualisation de la recherche, c'est me donner de l'argent pour faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce que je sais faire, je le fais sans moyens...