Règles d'alignement + structure + fichier

visualstar Messages postés 18 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 17 février 2005 - 5 déc. 2004 à 17:42
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 7 déc. 2004 à 12:42
Bonsoir,

J'ai fais un p'tit programme qui écris simplement des structures dans un fichier. Puis après je fais le dump du fichier en question et j'aurais bien voulu savoir quelles étaient les règles d'alignement des structures dans le fichier !!!
Je ne trouve rien sur internet !

5 réponses

Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
5 déc. 2004 à 18:53
Euh, je ne vois pas trop ce que tu veux dire par "règles d'alignement"....j'ai cru comprendre que tu souhaitais écrire (et lire par la suite) des structures dans un fichier, c'est bien cela ?
Si c'est cela, cherche sous "ecriture dans un fichier", ou "entrée/sortie en C++"

++

Gendal67, Dev-C++ 4.9.9.0, J'adore cppfrance!! :-))
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
5 déc. 2004 à 18:53
je crois qu'une option te permet de regler cet alignement, mais par defaut, ca doit etre un alignement sur 4octets, cad :

struct coucou {
int coucou;
char pourquoi;
}

Le compilo rajoutera 3octets vides pour que ta structure soit aligné sur 4octets.
Voila, j'espere que jme suis pas planté ;)

PS : Il faut tjrs mettre, dans une structure, les types de données les plus grand au depart et ensuite decroitre vers les types de petites tailles...

++

+2(p - n)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 déc. 2004 à 12:56
Pas d'accord avec le PS d'AlexMAN, parfois c'est utile d'avoir 2 types de structures qui commencent par les mêmes types de champs, donc c'est ceux la qu'on met en premier
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
6 déc. 2004 à 18:22
vecchio, je vois pas ce ke tu veux dire, pourrais tu etre plus explicite ? un exemple peut etre ?

+2(p - n)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 déc. 2004 à 12:42
Ce n'est pas exactement ce dont je parlais, mais dans cet exemple on est obligé d'avoir hdr comme premier élément de la structure NMLISTVIEW
Parce que ont doit avoir un LPNMLISTVIEW et un NMHDR* dans lParam quand on recoit LVN_DELETEITEM

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/structures/nmlistview.asp

typedef struct tagNMLISTVIEW {
NMHDR hdr;
int iItem;
int iSubItem;
UINT uNewState;
UINT uOldState;
UINT uChanged;
POINT ptAction;
LPARAM lParam;
} NMLISTVIEW, *LPNMLISTVIEW;

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/common/structures/nmhdr.asp

typedef struct tagNMHDR {
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
0
Rejoignez-nous