Questions générales sur le rendu

Questions générales sur le rendu

par Fouad Mahmoud,
Number of replies: 2

Bonsoir, j’avais quelques questions générales sur le rendu.

D’abord, dans alu.h, le type flags_t doit être défini comme un char ou un uint8_t (ou c’est égal)?

En général pour les constantes de macros, y a t-il une convention de les définir dans le header file ou le fichier .c? 

Dans les fonctions prenant comme paramètre un enum, faut-il toujours vérifier que l’argument reçu fait bien parti de l’énumération (à travers des fonctions ou en bornant sa valeur)? 

Enfin, juste pour vérifier, quand une fonction prend comme argument une forme d’entier (ex: uint8_t ou uint16_t), faut-il vérifier dans la fonction que le paramètre reçu est bien un uint8_t ou un uint16_t etc ou cette tâche est-elle gérée par le compilateur lui même et ne doit pas être prise en considération? 

Merci beaucoup.

In reply to Fouad Mahmoud

Re: Questions générales sur le rendu

par Antoine Brunner,
Bonjour,

flags_t pourrait être défini comme unsigned char, car un char est garanti d'être 8 bits. Cependant, je pense que c'est plus lisible de le définir comme un uint8_t, car cela permet de voir en un coup d'oeil sa taille.

Pour les macros et les constantes, les définir dans le .h ou le .c est équivalent de décider si on met une variable private ou public en Java, par exemple. Si la variable doit être exposée à l'extérieur du fichier, alors il faut le mettre dans le .h. Si par contre la variable n'est utile que pour l'implémentation, il est bien de la garder dans le .c.

Pour les enums, il faut en effet vérifier que la valeur fait partie des valeurs possibles. En C, les enums sont encodées à l'aide de nombres entiers, et il est donc possible que la variable en question prenne un valeur en dehors de l'enum.

Pour les fonctions prenant des uint8_t (ou tout autre type), vous n'avez pas du tout besoin de vérifier quoi que ce soit. Peut importe comment les uint8_t sont encodés sur votre machine, le C fait en sorte que c'est soit bien une valeur 8 bits que vous recevez en argument.

J'espère que cela répond à vos questions, bonne journée !