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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

[C] Possible de faire un extern sur une union de struct [RESOLU] ?

n°866681
yoms
Posté le 06-10-2004 à 22:21:11  profilanswer
 

Reprise du message précédent :
Ah merci Lam's ! Donc en effet je vais voir si je peux me démerder avec un autre compilo. Car c'est vrai qu'il y avait un truc qui m'intriguait, c'est que lorsque je faisais la même union, mais qu'avec une seule struct dans l'union et des variables de type int (cf. exemple 2 du premier post), ça passait sans pb. Ce n'est que lorsque je faisais une union avec au moins 2 struct que ça plantait en extern. C'est pour ça que ça me paraissait flou. Toi aussi tu utilises LabWindows ?

mood
Publicité
Posté le 06-10-2004 à 22:21:11  profilanswer
 

n°866682
yoms
Posté le 06-10-2004 à 22:22:21  profilanswer
 

Taz a écrit :

Lam's : y a pas de bug de compilateur. Y a juste des gens qui font des déclarations qui ne déclarent rien et utilise extern sans en comprendre le sens.
 
Avec cris56, on débarque, on cherche pas à comprendre, on prends le problème à la base : la déclaration de type est invalide. Maintenant si vous êtes pas capable de comprendre que tant que les problèmes structurels sont pas réglés, ça sert à rien de s'occuper des périphériques ...
 
et ton histoire de décoration des types, c'est n'importe quoi ... toi non plus, tu ne sais pas ce que fait extern ... alors faudrait voir à arrêter de faire la leçon de C ou de manières à tout le monde. Commence par faire ta déclaration d'union correctement. Après si tu veux savoir ce que fait extern, suffit de demander, et pas de nous sortir des fausses définitions.


 
Taz dans toute sa splendeur...

n°866683
cris56
Posté le 06-10-2004 à 22:22:54  profilanswer
 

et ca ?
 
extern T_Blabla maVariable = {NULL};

n°866684
Taz
bisounours-codeur
Posté le 06-10-2004 à 22:24:09  profilanswer
 

Yoms > tu vois bien, on se tue à t'expliquer que ton problème de déclaration mal formée n'est pas lié à extern et vice versa, mais tu t'entêtes à tout amalgamer ...

n°866686
yoms
Posté le 06-10-2004 à 22:24:48  profilanswer
 

cris56 > oui là tu as tout à fait raison. C'est une erreur de ma part dans le topic, mais pas dans mon code. 2 min et je te sors le bon truc...


Message édité par yoms le 06-10-2004 à 22:33:30
n°866689
Taz
bisounours-codeur
Posté le 06-10-2004 à 22:29:21  profilanswer
 

c'est pas très conseille ce genre de chose (est-ce que standard d'ailleurs, je commence à chercher), il faut initialiser dans la même unité de traduction que l'allocation.

n°866691
yoms
Posté le 06-10-2004 à 22:31:33  profilanswer
 

Dans un fichier .h, j'ai pondu ça :

Citation :


#if (defined _DECLARE_DATA_ || defined _USE_DATA_)
if defined _DECLARE_DATA_
#define Drivers
Drivers T_Blabla maVariable = {NULL};
 
Plus loin:
 
if defined _USE_DATA_
#define Drivers extern
Drivers T_Blabla maVariable;


 
Bien sûr c'est un extrait et il manque les #endif
 
Dans un fichiers .c , j'écris une UNIQUE fois :
#define _DELCARE_DATA_
 
Dans tous les autres fichiers *.c qui ont besoin de voir cette variable, j'écris toujours :
#define _USE_DATA_

n°866693
Taz
bisounours-codeur
Posté le 06-10-2004 à 22:33:45  profilanswer
 

bon allez, je cite
 
 
"Une déclaration  externe d'un objet est une définition si elle comporte une initialisation. La déclaration d'un objet extern qui ne comporte pas d'initialiseur et qui ne contient pas le spécificateur extern est une définition potentielle. Si une unité de traduction comprend la définition d'un objet, tout définition potentielle est considérée comme déclaration redondante. Si l'unité de traduction ne comprends aucune définition de l'objet, toute définition potentielle devient une définition unique avec une valeur initiale nulle. Chaque objet doit avoir une et une seule définition." etc ...

n°866697
Taz
bisounours-codeur
Posté le 06-10-2004 à 22:35:35  profilanswer
 

mouef, c'est pas propre ton machin, et c'est source d'erreur.
 
dans ton foo.h tu mets

Code :
  1. extern int c;


 
et tu fais un foo.c

Code :
  1. #include "foo.h"
  2. int c = 3;

 et là t'es blindé

n°866704
yoms
Posté le 06-10-2004 à 22:42:45  profilanswer
 

Bon ben au-delà de la question de propreté qui à nous nous parait très bien comme ça (faut savori aussi qu'on pas qu'une variable, mais une chiée de variables que l'on classe dans des fichiers *.h à thèmes style le *.h de l'interface, le *. des drivers, le *.h de l'IHM, etc.) Bref, pour la propreté, là n'est pas la question.
 
Maintenant que c'est clair sur la façon dont je déclare et que j'initialise ce truc et que je suis aussi blindé de mon côté, où est le problème ? Je ne suis pas dans le cas d'une définition potentielle. Pourquoi que tout est nickel quand je ne l'utilise pas en extern ?

mood
Publicité
Posté le 06-10-2004 à 22:42:45  profilanswer
 

n°866706
Joel F
Real men use unique_ptr
Posté le 06-10-2004 à 22:43:47  profilanswer
 

.....

n°866707
yoms
Posté le 06-10-2004 à 22:44:08  profilanswer
 

Au cas où, j'ai bien une erreur au link et pas à la compil'

n°866708
Taz
bisounours-codeur
Posté le 06-10-2004 à 22:44:12  profilanswer
 

c'est pas une question de propreté : pourquoi s'ennuyer à faire des #define (et risquer une erreur) quand tout peut fonctionner sans aucune intervention de ta part ?
 
c'est quoi ton message d'erreur quand tu utilises extern ?

n°866711
Lam's
Profil: bas.
Posté le 06-10-2004 à 22:49:21  profilanswer
 

Yoms a écrit :

Maintenant que c'est clair sur la façon dont je déclare et que j'initialise ce truc et que je suis aussi blindé de mon côté, où est le problème ? Je ne suis pas dans le cas d'une définition potentielle. Pourquoi que tout est nickel quand je ne l'utilise pas en extern ?


Je crois que ça ne sert à rien de reposer cette question, puisque Monsieur Taz ne veut pas répondre  :)  
 
Bon, comme je l'ai dit (en m'expliquant mal sans doute), lorsque tu utilises extern, tu indiques que l'allocation s'est faite dans une autre unité de compilation (un autre .o ou .obj).  
 
Or, suivant les compilateurs, il se peut que le code généré ne sache pas à l'avance quels sont les choix d'implémentation réalisés (tu peux avoir un #pragma pack dans un seul fichier par exemple). Le compilo va donc peut-être (ça, j'en suis pas sûr), essayer de faire l'initialisation de l'extern (celle que tu nous montre avec ton = { NULL} ) en passant par le nom des variables, y compris le nom des trucs dans tes structures.  
 
Comme tu as des membres complètement anonymes dans ton union (les structures sont justes définies: tu ne déclares par d'instance de ces structures), ça chie. Ca, c'est juste une hypothèse, mais c'est celle qui me parrait la plus plausible.  
 
Dans tous les cas, ne te pose pas tant de questions : ton code est invalide : corrige-le comme te l'ont indiqué Cris56 et l'autre sociopathe et c'est tout. Si tu savais le nombre de merdes qui passent sans problèmes à la compilation avec Visual C++ 6 par exemple...

n°866714
yoms
Posté le 06-10-2004 à 22:52:03  profilanswer
 

Taz > on ne fait pas toujours comme l'on veut. Il y a une méthodolgie imposée dans le labo, une façon de nommer les variables, etc. C'est comme ça, voilà tout. Maintenant, j'ai pris le pli et ça me parait clair, mais au début c'était aussi zarb'. Bref...
 
De tête car c'est au boulot : il me dit que je déclare une seconde fois "maVariable" et que cette seconde déclaration est dans un type différent que celui de la déclaration initiale. Or, c'est louche car dans le fichier *.c je ne délcare pas la variable, je l'utilise direct. J'écris par exemple :  
 
maVariable.bidulle = 5;  
 
Jamais je n'écris un truc du genre :
T_UnAutreType maVariable;
 
Et comme dit lorsque l'union ne comporte qu'une struct avec d'autres variables de type int par exemple, ça marche nickel. Dès qu'il y a 2 struct, ça devient daubique...

n°866716
yoms
Posté le 06-10-2004 à 22:58:52  profilanswer
 

Lam's je comprends ce que tu veux dire, mais j'avais écarté cette solution car l'initialisation de l'extern avait déjà été faite dans le *.c où figure le
#define _DECLARE_DATA_ A partir de là, lorsqu'il linke il ne devrait pas avoir à se reposer cette question

n°866719
Taz
bisounours-codeur
Posté le 06-10-2004 à 23:00:46  profilanswer
 

Yoms > ouais, donc tu peux conclure toi même que ta méthode est pas sécurisée.

n°866723
Lam's
Profil: bas.
Posté le 06-10-2004 à 23:06:29  profilanswer
 

Yoms a écrit :

Or, c'est louche car dans le fichier *.c je ne délcare pas la variable, je l'utilise direct. J'écris par exemple :  
 
maVariable.bidulle = 5;  


Sisi, tu la déclares (via l'inclusion de ton .h). Certes, tu ne la rédéfinis pas forcément (puisque c'est une extern), mais tu la déclares bel et bien dans chaque .c qui utilises ton .h

n°866724
yoms
Posté le 06-10-2004 à 23:07:22  profilanswer
 

Taz > bah ça me laisse perplexe car je me dis quema méthode revient à la tienne en ce sens que lorsque je fais l'include du *.h il va bêtement me coller le contenu de ce fichier et remplacé le mot "Drivers" par extern ou que dalle selon que j'ai écrit _USE_DATA_ ou _DELCARE_DATA_. Donc si on pouvait prendre un cliché de mon *.c après cet include, il ressemblerait comme 2 gouttes d'eau à ce que tu as écris ci-dessus...
 
Mais bon, le pb il vient pas alors de la façon dont j'ai crée mon union ?!?
 
Moi je pige pas pourquoi avec une struct ça passe et 2 il pête un câble...

n°866725
cris56
Posté le 06-10-2004 à 23:08:10  profilanswer
 

sort le listing du preprocesseur

n°866727
yoms
Posté le 06-10-2004 à 23:11:05  profilanswer
 

Lam's> je ne la déclare que dans le *.c qui fait l'include du  *.h et qui contient la ligne de code #define _DECLARE_DATA_ avant d'écrire le #include file.h C'est aussi dans ce fichier qu'elle est initialisée. Dans ce fichier la variable est donc pleinement définie. Dans les autres fichiers, je ne la redéclare pas, j'en demande une visibilté seulment car je fais un include du même *file.h mais précédé de #define _USE_DATA_

n°866728
yoms
Posté le 06-10-2004 à 23:11:57  profilanswer
 

cris56 > euh là je ne suyis pas au taf' donc...

n°866729
Taz
bisounours-codeur
Posté le 06-10-2004 à 23:12:15  profilanswer
 

oui, ta méthode revient à celle (canonique) que j'ai exposée. Mais la tienne te permet de t'emmêler les pinceaux. L'erreur que tu rapportes en est typiquement la preuve. On te dit pas que y a une méthode simple qui existe et qui est employée par tout le monde depuis 20ans rien que pour t'embêter. Nous la joue pas j'ai une méthode 'révolutionnaire'. Tout le monde fais un .c et un .h : sauf ceux qui n'écoute pas leur pairs.


Message édité par Taz le 06-10-2004 à 23:12:27
n°866733
yoms
Posté le 06-10-2004 à 23:19:31  profilanswer
 

Je n'ai jamais dit qu'elle était révolutionnaire. Toi alors ! Mais j'ai aussi des *.c et des *.h. Je pige pas ta remarque là...
 
Types.h

Code :
  1. typedef union
  2. {
  3.    struct Toto
  4.    {
  5.       int a : 10;
  6.       int b : 12;
  7.       int c : 10;
  8.    };
  9.    struct Titi
  10.    {
  11.       int d : 10;
  12.       int e : 15;
  13.       int f : 7;
  14.    };
  15.    struct Tata
  16.    {
  17.       int g : 7;
  18.       int h : 8;
  19.       int i : 17;
  20.    };
  21. } T_Blabla;


 
Ressource.h

Code :
  1. #ifndef _RESSOURCES_
  2. #define _RESSOURCES_
  3. #include "Types.h"
  4. #if (defined _DECLARE_DATA_ || defined _USE_DATA_)
  5. if defined _DECLARE_DATA_
  6. #define Drivers
  7. Drivers T_Blabla maVariable = {0};
  8. if defined _USE_DATA_
  9. #define Drivers extern
  10. Drivers T_Blabla maVariable;
  11. #endif;
  12. #endif;
  13. #endif;


 
Youpi.c

Code :
  1. #define _DECLARE_DATA_
  2. #include "Ressource.h"
  3. ...
  4. maVariable.a = 5;
  5. ...


 
Piyou.c

Code :
  1. #define _USE_DATA_
  2. #include "Ressource.h"
  3. ...
  4. maVariable.a = 10;
  5. ...


Message édité par yoms le 06-10-2004 à 23:38:57
n°866734
Lam's
Profil: bas.
Posté le 06-10-2004 à 23:20:33  profilanswer
 

Yoms a écrit :

Dans les autres fichiers, je ne la redéclare pas, j'en demande une visibilté seulment car je fais un include du même *file.h mais précédé de #define _USE_DATA_


 
Permet moi d'insister : tu la redéclares, même si tu ne la définis pas.
 
Le premier lien qui vient sous google explique pas trop mal la différence entre déclaration et définition:
 
http://www-ee.eng.hawaii.edu/Cours [...] 1.1.4.html

n°866739
yoms
Posté le 06-10-2004 à 23:24:47  profilanswer
 

Euh oui oui... autant pour moi, en réécrivant proprement ce que j'ai pondu, ça apparait. Prochaine fois, j'emmènerai les fichiers chez moi, ça m'évitera de me planter et de pas avoir à rééditer 3 fois mon post pour modifier les erreurs dedans.
 
Je viens de me relire, et en fait c'était pour répondre à Taz par rapport au message d'erreur, je voulais dire que je ne la redéclare pas (sous-entendu dans un autre type comme le fait croire le compilo). Voilà, correction faite.


Message édité par yoms le 06-10-2004 à 23:29:48
n°866748
yoms
Posté le 06-10-2004 à 23:37:25  profilanswer
 

Ayé, je crois j'ai finis de mettre à jour le post avec tous les extraits de code. Ca donnera une bonne vue d'ensemble. En espérant que je ne me sois pas encore planté qq part.

n°866749
Lam's
Profil: bas.
Posté le 06-10-2004 à 23:39:15  profilanswer
 

Yoms a écrit :

je voulais dire que je ne la redéclare pas (sous-entendu dans un autre type comme le fait croire le compilo).


 
Ah, mais ça le compilo ne le sait pas, puisqu'il y a des membres de ton union qui sont anonymes. Et si tu mets plusieurs membres anonymes (chacune de tes structures), c'est normal qu'il soit perdu, non ?
 
(au fait, une note pédante inutile, juste histoire que tu sois pas venu pour rien: on écrit "au temps pour moi" :bounce: ).

n°866755
schnapsman​n
Zaford Beeblefect
Posté le 06-10-2004 à 23:43:02  profilanswer
 

Sur le "autant pour moi", il y a polémique, il ne sert donc à rien d'affirmer quoi que ce soit de manière pédante.
 
Sinon à part ça elle sert à quoi ton enum n°1? comment vas tu faire pour accéder à la première struct, puisque tu ne la pas nommée?
 
Ta déclaration ne sert à rien en fait. Il faut que tu nommes les structs imbriquées dans ton union:

Citation :

typedef union
{
   struct Toto
   {
      int a : 10;
      int b : 12;
      int c : 10;
   } prout;
   struct Titi
   {
      int d : 10;
      int e : 15;
      int f : 7;
   } rot;
   struct Tata
   {
      int g : 7;
      int h : 8;
      int i : 17;
   } vomi;
} T_Blabla;


 
et la limite tu peux utiliser des structs anonymes:

Citation :

typedef union
{
   struct
   {
      int a : 10;
      int b : 12;
      int c : 10;
   } prout;
   struct
   {
      int d : 10;
      int e : 15;
      int f : 7;
   } rot;
   struct
   {
      int g : 7;
      int h : 8;
      int i : 17;
   } vomi;
} T_Blabla;


Message édité par schnapsmann le 06-10-2004 à 23:48:14

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°866764
gilou
Modérateur
Modzilla
Posté le 06-10-2004 à 23:51:48  profilanswer
 

Yoms a écrit :

Mais je ne veux pas déclarer une variable du type struct Foo puisque je fais une union. C'est une variable du type de l'union que je déclare.

Bon c'est là ton probleme a la base:
Une union en C, c'est une union de variables (typées) et non pas une union de types. Or tu declares une union de types (des structs), et non des variables. Et le C est un langage trop primitif pour avoir directement une notion de type composé.
Que ton compilo accepte ce genre de code incorrect, c'est possible, mais ca a des limites apparement atteintes par ton code.
 
je cite le K & R:

Citation :

A struct declaration defines a type...A structure declaration that is not followed by a list of variables reserves no storage; it merely describes a template or shape of a structure


 
A+,


Message édité par gilou le 06-10-2004 à 23:56:15

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°866766
schnapsman​n
Zaford Beeblefect
Posté le 06-10-2004 à 23:58:51  profilanswer
 

gilou a écrit :


je cite le K & R:

Citation :

A struct declaration defines a type...A structure declaration that is not followed by a list of variables reserves no storage; it merely describes a template or shape of a structure




 
hop puisqu'on est en à explorer toutes les possibilités foireuses du C, allons y gaiement:
 

Citation :

typedef union
{
   struct
   {
      int a : 10;
      int b : 12;
      int c : 10;
   } prout, pet, vesse;
   struct
   {
      int d : 10;
      int e : 15;
      int f : 7;
   } rot;
   struct
   {
      int g : 7;
      int h : 8;
      int i : 17;
   } vomi, gerbe;
} T_Blabla;


Message édité par schnapsmann le 06-10-2004 à 23:59:18

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°866768
cris56
Posté le 07-10-2004 à 00:01:19  profilanswer
 

A struct declaration defines a type. The right brace that terminates the list of members may
be followed by a list of variables, just as for any basic type. That is,
struct { ... } x, y, z;
is synta ctically analogous to
int x, y, z;
 
A structure declaration that is not followed by a list of variables reserves no storage;

n°866769
Taz
bisounours-codeur
Posté le 07-10-2004 à 00:06:58  profilanswer
 

du reste j'ajoute que tu es le premier sur Terre à utiliser
 
#define _RESSOURCES_
#define _USE_DATA_
 
 
y a aucun problème de collision à aucun moment, c'est nickl comme ça.
 
 
 
kikou Gilou, kikou schnaps :hello:
 
personnellement, je ne sais pas quoi faire de quelqu'un qui fait le warrior avec des .h compliqués comme pas possible pour résoudre un problème vieux comme le C, mais qui après 2 pages d'explications, se prend toujours les pieds dans le tapis pour déclarer un type ...

n°866770
gilou
Modérateur
Modzilla
Posté le 07-10-2004 à 00:07:17  profilanswer
 

> hop puisqu'on est en à explorer toutes les possibilités foireuses du C, allons y gaiement:  
 
Il y a rien de foireux dans cette declaration. Tu as aussi:

Code :
  1. typedef union
  2. {
  3.    struct
  4.    {
  5.       int a : 10;
  6.       int b : 12;
  7.       int c : 10;
  8.    } prout[3];
  9.    struct
  10.    {
  11.       int d : 10;
  12.       int e : 15;
  13.       int f : 7;
  14.    } rot;
  15.    struct
  16.    {
  17.       int g : 7;
  18.       int h : 8;
  19.       int i : 17;
  20.    } vomi, *gerbe;
  21. } T_Blabla;


 :D  
A+,


Message édité par gilou le 07-10-2004 à 00:08:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°866771
yoms
Posté le 07-10-2004 à 00:10:29  profilanswer
 

Oui merci Gilou et schnapsmann, effectivement je n'ai pas LabWin à la maison, mais j'aurais effectivement bien testé cette modif qu'avait suggéré Taz au départ (même si on a un peu de mal à se comprendre).  
 
En fait, mon erreur et mon insitance vient du fait de ma confiance dans le compilo de LabWin comme vous le sous-entendez (tous les trois avec Lam's). C'est finalement ça la réponse à la question "Pourquoi ça marche ainsi et pas ainsi ?" : "Parce que ton compilo te le permet". Je n'ai pas remis en cause mon code, d'autant que j'avais réglé toutes les options du compilo pour qu'il ne me pardonne rien et qu'il soit le plus aggressif possible. Visiblement mon compilo a bien deviné le truc pour un usage normal, mais en extern il a jeté l'éponge...
 
Bon cela dit, le fait de devoir nommer mes struct va m'obliger à écrire :
maVariable.prout.a = 5;
au lieu de direct :
maVariable.a = 5;
Dommage c'était cool...
 
 
PS : histoire d'en rajouter une couche, je viens de me souvenir que pour cetaines raisons, certains champs des structures portaient le même nom... Je suis curieux de savoir ce que va dire le compilo si je renomme tout différemment. Arrivera-t-il à retrouver ses petits rien qu'en regardant le nom des champs ? Mais, c'est pas propre...
 
 
En tout cas, merci à tout le monde, je posterai demain pour confirmer tout ça.

n°866772
gilou
Modérateur
Modzilla
Posté le 07-10-2004 à 00:10:46  profilanswer
 

[hors sujet]
En tapant "anonymous union member" sous gogol, je suis tombé sur la page du C-omega (une extension de C#) sur le site de recherche de mirosoft.
Pour ceux qui sont curieux: http://research.microsoft.com/Comega/
[/hors sujet]
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°866774
schnapsman​n
Zaford Beeblefect
Posté le 07-10-2004 à 00:14:09  profilanswer
 

gilou a écrit :

> hop puisqu'on est en à explorer toutes les possibilités foireuses du C, allons y gaiement:  
 
Il y a rien de foireux dans cette declaration. Tu as aussi:

Code :
  1. typedef union
  2. {
  3.    struct
  4.    {
  5.       int a : 10;
  6.       int b : 12;
  7.       int c : 10;
  8.    } prout[3];
  9.    struct
  10.    {
  11.       int d : 10;
  12.       int e : 15;
  13.       int f : 7;
  14.    } rot;
  15.    struct
  16.    {
  17.       int g : 7;
  18.       int h : 8;
  19.       int i : 17;
  20.    } vomi, *gerbe;
  21. } T_Blabla;


 :D  
A+,


 
yaisse pas mal du tout ça  [:tinostar]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°866775
gilou
Modérateur
Modzilla
Posté le 07-10-2004 à 00:14:51  profilanswer
 

Citation :

Bon cela dit, le fait de devoir nommer mes struct va m'obliger à écrire :  
maVariable.prout.a = 5;  
au lieu de direct :  
maVariable.a = 5;  
Dommage c'était cool...


 
Si tu as des noms suffisament explicites et uniques pour tes champs finaux, ca peux se regler a coup de preprocesseur...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°866776
schnapsman​n
Zaford Beeblefect
Posté le 07-10-2004 à 00:15:48  profilanswer
 

Yoms a écrit :


PS : histoire d'en rajouter une couche, je viens de me souvenir que pour cetaines raisons, certains champs des structures portaient le même nom... Je suis curieux de savoir ce que va dire le compilo si je renomme tout différemment. Arrivera-t-il à retrouver ses petits rien qu'en regardant le nom des champs ? Mais, c'est pas propre...


C'est pas propre et surtout ça ne compile pas sur les compilos munis d'une grammaire C "normale".
On nomme les membres des unions, c'est tout  :o  
 
Content que tu aies compris, comme quoi ça sert parfois de faire des efforts de pédagogie, a+  :o


Message édité par schnapsmann le 07-10-2004 à 00:16:13

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°866777
Lam's
Profil: bas.
Posté le 07-10-2004 à 00:16:47  profilanswer
 

Taz a écrit :


personnellement, je ne sais pas quoi faire de quelqu'un qui fait le warrior avec des .h compliqués comme pas possible pour résoudre un problème vieux comme le C


 
Justement, son truc est ultra typique de la programmation de DLLs sous Windows: une fois la macro dans le .h vaudra  "__dllimport", une autre fois, ça vaudra "extern", une autre fois autre chose, etc.
 
On aime ou on aime pas, de toutes façons, le sujet a déjà été abordé mille fois ici. Mais force est de constater que c'est plus une histoire de goût qu'autre choses...
 
 
PS: schnapsmann, tu l'as trouvée où la polémique sur le "autant pour moi" ?

n°866778
Taz
bisounours-codeur
Posté le 07-10-2004 à 00:16:58  profilanswer
 

toute façon, t'es bien eu si t'es entiers sont pas 32bits :o
 
gilou > rigolo, mais j'ai rien compris à la prononciation :D
 
 
Yoms >
 

Citation :

Bon cela dit, le fait de devoir nommer mes struct va m'obliger à écrire :
maVariable.prout.a = 5;
au lieu de direct :
maVariable.a = 5;
Dommage c'était cool...

réfléchis et tu vas voir qu'il ne peut en être autrement. C'est toi même qui nous as expliqué que les union permettent des 'vues' ... comment tu veux accéder à .a directement ? il faut spécifier que tu te place dans le contexte .prout ...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[HTML/PHP][Résolu] Problème de sauvegarde pour les formulaires[JAVASCRIPT] Possible de récuperer la date de création d'une image ?
[Assez urgent] Lien au sein d'un tableau, c'est possible ?[RESOLU]probleme avec ma session
Supprimer tout ce qui n'est pas lettre et chiffre (resolu)[RESOLU] problème de condition sur un requête SQL
Probleme d'une simple expression reguliere [RESOLU][Résolu][Eclipse 3] générer un "model"
[resolu]Forcer telechargement header() prob dans include() helpprobleme avec md5 et ma session [RESOLU]
Plus de sujets relatifs à : [C] Possible de faire un extern sur une union de struct [RESOLU] ?


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