|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Salut,
Une union permet de regrouper différents champs dans un même ensemble. Un peu comme une structure mais à la différence que seul un des champs est valide à un moment donné. L'énumération permet de savoir quel est le champs valide. Au vu de ce que tu décris, j'aurais tendance à définir le type d'erreur comme unsigned long. Ce type est ensuite utilisé par tous les autres modules. Puis d'avoir une fonction de 'normalisation' de l'erreur, dépendante du driver, qui transforme l'erreur du driver dans une erreur dans ton type unsigned long. |
|
|
00
|
|
|
#22 | |
|
Invité de passage
![]() JeanLouis Ingénieur développement matériel électronique Inscription : juillet 2012 Messages : 26 ![]() |
ouai je viens de lire un petit cours sur les unions et les enums. Je comprend leurs principe, c'est vachement pratique!
Citation:
Mais du coup je peux déjà avoir une variable qui prendra le type que je lui dirai, sans en avoir 36 des variables! Et si c'est moi qui lui dit quel type prendre, je peux envoyer cette variable à une gestion qui n'aura qu'à regarder dans un champ "type" de la structure par exemple (que j'aurai instancié préalablement). La le traitement pourra se faire en fonction du type! C'est bien ça |
|
|
|
00
|
|
|
#23 | ||
![]() ![]() Inscription : juin 2008 Messages : 7 631 ![]() |
Il faut renseigner les 2 champs en même temps :
Code :
|
||
|
|
00
|
|
|
#24 | ||
|
Invité de passage
![]() JeanLouis Ingénieur développement matériel électronique Inscription : juillet 2012 Messages : 26 ![]() |
Okay ouai
donc je pense que je pourrai faire ça: Code C :
Ensuite ma_gestion_derreur peut récupérer l'erreur et sont type pour pouvoir en faire ce qu'elle veut!? |
||
|
|
00
|
|
|
#25 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 717 ![]() |
L'idée est pas mal, même si ça ne change pas fondamentalement la face du monde. Au lieu de donner en paramètre à la fonction de gestion d'erreur un pointeur et un char pour indiquer le type de donnée à interpréter, tu lui passes seulement la structure. A l'intérieur, tu testes la valeur du champ énuméré pour savoir comment lire le champ du code d'erreur.
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#26 | |
|
Invité de passage
![]() JeanLouis Ingénieur développement matériel électronique Inscription : juillet 2012 Messages : 26 ![]() |
Citation:
Non, ce qui changerai la face du monde (ou pas ), ça serai de pouvoir chopper la valeur de retour des drivers sans se soucier de son type. Mais là... Ca reglera pas mal de problème en cas d'implémentation de nouveaux drivers.
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com