Salut tout le monde,

Citation Envoyé par Bktero Voir le message
Pour la seconde question :
La taille de la structure est a priori également non prédictible. Le point 13 dit qu'on ne peut pas réagencer les membres, et le point 12 dit que les champs sont regroupés dans des unités, sans overlap. On devrait donc pouvoir faire un calcul pour retrouver la taille totale. Toutefois, j'interprète la 1ère phrase de ce point 12 comme : l'unité de stockage peut être de n'importe quelle taille, et donc on ne peut pas vraiment savoir quelle taille aura la structure globale. Vous comprenez aussi ça comme ça ?
Citation Envoyé par Bktero Voir le message
je veux bien qu'on puisse faire une nuance, mais je pense que c'était quand même clair, non ?
Non, parce que, justement, le tassement, le rembourrage, l'alignement, le boutisme permettent d'agencer ou réagencer des éléments sans pour autant changer leur ordre. En fait, tu as commencé à citer le standard, en mélangeant certains de ses aspects, et en ce qui concerne les champs de bits, tu as fini par écrire tout le contraire de ce que dit le standard.

Citation Envoyé par Bktero Voir le message
Je vais aller dans le sens de @boboss123 : ton raisonnement est très centré PC, toujours sur la même architecture Intel x64.
Ce n'est pas l'impression que me donne son message, et surtout pas le mien. En plus, si tu relis mon avant-dernier paragraphe et son message où il précise sa pensée, en y décrivant des problèmes de portabilité, tu y verras une convergence. Il résout son souci de disparité d'architectures d'mcus en écartant les champs de bits de ses projets. C'est tout à fait louable et compréhensible. Il n’y a rien à rajouter. Je lui laisse le soin de confirmer s'il le souhaite.

Citation Envoyé par Guesset Voir le message
Oui c'est prédictible mais cela demande de regarder toute la doc (mais qui le fait ? ).
Les gens sérieux @Guesset, les gens sérieux Merci pour ce message.

Citation Envoyé par dalfab Voir le message
Il est facile de vérifier qu'il n'est pas prédictible en utilisant des compilateurs différents
.../...
un processeur 16 ou 32 bits peut aligner le uint64_t sur 2 ou 4 octets et forcément donner une taille de structure différente.
Coucou @dalfab,
Mais encore une fois, il y a une confusion entre prédictibilité et portabilité. Et pour preuve, ce n'est même pas garanti que ce code compile sur une cible 16bits ou 32bits, puisque l'implémentation du type uint64_t est elle-même non garantie.

Citation Envoyé par Bktero Voir le message
PS2 : ah j'ai trouvé ! https://gcc.gnu.org/onlinedocs/gcc-1...mentation.html )=> Il faut maintenant savoir quelle ABI est utilisé et trouver sa doc
Oui il faut regarder dans les options des plateformes cibles, gcc appelle ça des machines.
Pour ce qui est de l'ABI, avec chaque système ou puce, sont livrés éventuellement un compilateur officiel, une bibliothèque ou des documentations, faisant ainsi office de référence. Et donc, pour construire des binaires compatibles, gcc doit en reprendre les spécificités et extensions, y compris au détriment du strict standard.