Aide - Recherche - Membres - Calendrier
Version complète : #pragma pack
Forum PC INpact > Systèmes, logiciels et lignes de codes > Programmation et Création web > Programmation (C, Perl, Python, Java...)
ginglese
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.
Anonymous
Salut,

Le pragma pack permet d'aligner les structures.
CODE
#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 :
CODE
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
CODE
#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
ginglese
merci.

j'avais déjà vue ce site.
il ne réponds pas à mes questions .....
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.