question sur les char * - C++ - Programmation
Marsh Posté le 20-07-2010 à 22:12:16
les membres des structures sont alignés sur 32/64 bits.
3 char deviennent 4 char etc
Marsh Posté le 20-07-2010 à 22:14:35
Joel F a écrit : les membres des structures sont alignés sur 32/64 bits. |
Arf. Donc si je veux que les données soient consécutives, je n'ai pas d'autre choix que de tout recopier dans un buffer les unes à la suite des autres ?
Marsh Posté le 20-07-2010 à 22:41:03
Joel F a écrit : mets ton char[3] a la fin. |
en fait l'ordre est important je dois d'abord fournir le champ int en premier, ensuite un char[3], etc ... Je suis obligé de copier le tout dans un buffer je crois, non ?
Marsh Posté le 20-07-2010 à 22:57:44
Joel F a écrit : google attribute packed |
merci mais il faudrait en plus que ma solution soit portable sur tous les Os (sun, linux, sparc, windows, etc) et je ne sais pas si __attribute__((__packed__)) le permet
Marsh Posté le 21-07-2010 à 06:49:42
c'est compilo dependant, pas OS dependant.
Sous MSVC ca s'appelle #pragma pack
Marsh Posté le 20-07-2010 à 21:38:58
bonjour à tous,
voila mon problème, ou plutôt ma question, est ce que si on prend un pointeur qui pointe vers une structure, on peut la lire comme une chaine de charactères ? Je m'explique :
Par exemple j'ai la structure suivante :
Est ce que je peux considérer un pointeur de char* dessus, et espérer retrouver les valeurs des champs ? cad :
mais, ce que je ne comprend pas, c'est pourquoi pour retrouver ma valeur de float o.c = 3.14f, je suis obligé d'aller à la case huit! pourquoi ce n'est pas la case 7 plutot ? comme sur mon schéma en commentaires...
Si vous avez compris et savez pourquoi, merci!!
Message édité par in_your_phion le 20-07-2010 à 21:43:00