Aller au contenu

#pragma pack


Messages recommandés

bonjour,

je voudrais avoir des infos sur l'influence d'un #pragma pack

+ autre infos.

dans la doc ils disent qu'il agit sur la 1ère structure suivant le pragma mais est qu'il agit sur les suivantes.

que se passe t'il si on defini #pragma pack dans un header inclue dans plusieurs autres fichier ?

merci.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Le pragma pack permet d'aligner les structures.

#pragma pack(push,1)

te permet par exemple de "coller" toutes les variables de ta structure entre elles. Sans ça, tu peux avoir des "blancs" entre deux :

struct

{

 short _s;

 char _c;

 long _l;

}mystruct;

Entre _c et _l il peut y avoir 1 octet de perdu de par l'alignement.

En effet, pour optimiser le code, le compilateur aura généré un octet de plus entre _c et _l afin que toutes les adresses des variables soient paires. (L'ordinateur travaillant plus vite avec des adresses paires.)

La perte peut être plus importante, tout dépend du compilateur.

Tu peux le plus souvent spécifier l'alignement au compilateur directement dans les options de compilation.

Enfin, la façon "propre" de définir les pragma pack est de faire un

#pragma pack(pop)

à la fin de ton include pour éviter les effets de bord sur d'autres includes.

Voici un lien où les explications seront plus détaillées :

http://www.kamron.net/french/prog/tips.php

Bon courage !

Irgoff

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...