[réslu]Dév OS4 : Struct pas alignés pareil !
3 sujets de 1 à 3 (sur un total de 3)
-
Salut, je suis en train d’utiliser mpega.library sur os4 là, et j’ai eu un probleme de compilation (pas grand chose): d’abord, dans le package de mpega.library, il y a juste le .fd pour se demerder sur os4, et un « .i » bizarre sensé etre pour os4, avec une interface os4, mais avec une syntaxe assembelur bizarre… bref, je me suis fait mon mpega.h special os4 avec la struct d’interface moi meme, a partir du package de dev os3 classique, ça marche niquel.là ou j’ai eu un probleme, c’est avec une des struct a passer: MPEGA_CTRL
dans la version 68k originale il y a des structs dans la struct, genre:
{WORD,{WORD,WORD,LONG}}
en 68k, le premier WORDprend 2 oct, puis suit de suite la sous-struct ce qui fait que l’expression au dessus prend 10 octets. Avec le gcc du sdk os4, on *dirait* qu’on a des alignements différents pour le ppc, genre alignement sur 4 octets a chaque debut de structs, ce qui donne 12 octets pour la struct au dessus.
Je me suis démerdé en remplaçant la declaration de struct par un tableau de word et ça marche 😮
Alors voilà ma question: y a til un moyen de déclarer en C une struct en forçant le type d’alignement ? ou une option de compilation ?
Pour les includes système/libraries, on utilise généralement
#pragma pack(2)
définition des structures à aligner sur 2 octets
#pragma pack()
Tu devrais utiliser les outils de conversion fd/clib-> headers genre fd2pragma et cie qui font ça proprement pour tous les compilos/OS (sur MorphOS on a aussi un cvinclude.pl qui se charge de ça, il y a pt être qqch d’équivalent dans le sdk os4).
ok merci ! effectivement, les includes os4 sont bourrés de:
#ifdef __GNUC__
#ifdef __PPC__
#pragma pack(2)
#endif
#elif defined(__VBCC__)
#pragma amiga-align
#endif
c’est tout ce qu’il manquait a mon.h… sinon effectivement, il y a un tool pour créer des kits de library, mais ça ne prend pas des .fd mais des .xml… et parait-il il existe un tool encore ailleurs pour créer des .xml a partir du .fd
3 sujets de 1 à 3 (sur un total de 3)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › [réslu]Dév OS4 : Struct pas alignés pareil !