■ Exemple d'une structure pas aligné
■ Mais heureusement Fred fait bien les choses avec l'option
#PB_Structure_AlignCCode : Tout sélectionner
Structure friend Align #PB_Structure_AlignC
name.s
phone.s
love.i
EndStructure
Bon ok c'est nul mais ça détend....
■ Fred a dit
fred a écrit :La valeur spéciale #PB_Structure_AlignC peut être utilisée pour aligner la structure telle qu'elle se ferait en langage C, utile lors de l'importation structures C utilisées avec des fonctions API.
utile lors de l'importation de structures C utilisées avec des fonctions API.
Ne pratiquant pas l'importation de structure, je n’émettrais qu'un avis: Ce paramètre va permettre
d'ajuster l'alignement entre chaque champ de la structure comme cela devrait être en C.
■ La question est : Les structures en PureBasic ne sont pas alignées comme en C ? Ha bonnnnnnn ? Fred aime bien codé des sctructures anarchiques non alignées ?
Voyons voir par l'exemple :
Je vais créer une structure d'amis et regarder la taille en mémoire (SizeOf) ainsi que la position du champ love (OffsetOf)

Code et debug sans alignement.
Code : Tout sélectionner
Structure friend
name.s
phone.s
love.i
EndStructure
Debug "Structure Size " + SizeOf(friend)
Debug "Love Size: " + OffsetOf(friend\love)
debug
Structure Size 12
Love Size: 8

- Code et debug avec alignement.
Code : Tout sélectionner
Structure friend Align #PB_Structure_AlignC
name.s
phone.s
love.i
EndStructure
Debug "Structure Size " + SizeOf(friend)
Debug "Love Size: " + OffsetOf(friend\love)
debug
Structure Size 12
Love Size: 8
Mais heuuuuu ..... même résultat !!!! Ha moins qu'une structure soit aligné par défaut avec la valaur #PB_Structure_AlignC.

Parce qu'au cas ou tu ne le saurais pas, tu peux changer l'alignement des champs d'une structure.
Essaye ce code et ne me demande surtout pas à quoi ça sert.
Code : Tout sélectionner
Structure friend Align 10
name.s
phone.s
love.i
EndStructure
Debug "Structure Size " + SizeOf(friend)
Debug "Love Size: " + OffsetOf(friend\love)
doc a écrit :Cela peut aider à améliorer les performances lors de l'accès aux champs de la structure, mais cela peut utiliser plus de mémoire, car un certain espace entre chaque champs sera perdu.
Aprés tu vas devoir faire la chasse aux bits perdus.
Ha ciao
