C'est le spécificateur d'emballage spécifique à MSVC++. Vous pouvez savoir exactement ce qu'il fait de the documentation.
La compression modifie la quantité de remplissage que le compilateur est autorisé à insérer entre les membres de données d'une structure (ou classe) donnée pour maintenir l'alignement. Dans le cas du code réseau, le spécificateur #pragma pack
est probablement utilisé de sorte qu'une structure peut être convertie en char*
ou void*
pour être transmise à une API réseau, pour envoyer la structure entière sur le réseau à la fois.
(Notez que c'est dangereux que les différentes machines ont des règles différentes pour l'alignement et l'ordre des octets, ce qui ne fonctionnera que si les deux machines à chaque extrémité du fil utilisent le même type de matériel)
Merci pour votre réponse. Ai-je besoin d'emballage si je cours le serveur sur la machine de Linux? – codereviewanskquestions
@LCYSoft: voir [réponse de Gilad Naors] (http://stackoverflow.com/questions/6353054/what-is-pragma-pack-for-in-network-progamming/6353230#6353230). Ceci est spécifique à Microsoft. – Default