Salut tout le monde,
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.
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.
Les gens sérieux @Guesset, les gens sérieux Merci pour ce message. ;)
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.
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.