Na een tijdje zoeken ben ik er nu eindelijk achter gekomen hoe ik een packed c-structure kan maken. Dus een structure waarvan de members niet aligned zijjn. Dit is bijvoorbeeld handing bij het inlezen van binaire bestanden.
onder gcc gebruik ik het volgende:
Maar ik heb begrepen dat __attribute__ ((packed)) specefiek voor de gcc compiler is..
Weet iemand of er een compiler onafhankelijke methode is om packed structures te maken? Ik kan er weinig over vinden. Het liefst zo ik met een regel een complete struct packed maken en het niet bij elke member op geven.
Ik werk overigens wel met gcc (onder linux) maar wil mijn source zo platform/ciompiler onafhankelijk houden als mogelijk.
onder gcc gebruik ik het volgende:
C:
(irrelevant, maar dit is de file header van een MS-DIB, als ik deze unpacked inlees krijg ik redelijk verstrooide data terug)1
2
3
4
5
6
7
8
| struct msdib_file_header { char bf_type[2] __attribute__ ((packed)); unsigned int bf_size __attribute__ ((packed)); unsigned short bf_reserved0 __attribute__ ((packed)); unsigned short bf_reserved1 __attribute__ ((packed)); unsigned int bf_off_bits __attribute__ ((packed)); }; |
Maar ik heb begrepen dat __attribute__ ((packed)) specefiek voor de gcc compiler is..
Weet iemand of er een compiler onafhankelijke methode is om packed structures te maken? Ik kan er weinig over vinden. Het liefst zo ik met een regel een complete struct packed maken en het niet bij elke member op geven.
Ik werk overigens wel met gcc (onder linux) maar wil mijn source zo platform/ciompiler onafhankelijk houden als mogelijk.
[ Voor 29% gewijzigd door Verwijderd op 10-12-2002 12:39 ]