2010-09-30 20 views
2

Salut suis nouveau Visual C++, Quelqu'un pourrait-il s'il vous plaît expliquer ce ConfParams() déclaré dans une structure neC++ declspec aligner

__declspec(align(BYTE)) struct ConfParams 
{ 
    BOOL m_timeout; 
    DOUBLE m_caution; 
    ConfParams();  
} 

Répondre

3

Quelqu'un pourrait-il s'il vous plaît expliquer ce ConfParams() a déclaré dans une structure ne

C'est une déclaration de constructeur.

En C++ autre que le niveau d'accessibilité par défaut struct et class sont équivalents. struct par défaut a public membres, class par défaut a private membres.


Je ne comprends pas pourquoi votre sujet fait référence __declspec mais si c'est ce que vous voulez savoir sur see here.

Les fonctions membres n'ont pas d'alignement uniquement les données sont affectées.

+0

Merci, j'étais confus en voyant un constructeur étant défini dans une structure. Je ne savais pas si ça avait quelque chose à voir avec __declspec. – yoshi99

1

Google dit

http://msdn.microsoft.com/en-US/library/83ythb65%28v=VS.80%29.aspx

"Use __declspec (aligner (#)) pour contrôler avec précision l'alignement des données définies par l'utilisateur (par exemple, les allocations statiques ou automatique des données dans une fonction)"

Il fera démarrer le compilateur chaque instance sur une limite d'octet. Sans cela, les instances auraient été alignées sur la limite naturelle des machines - ce qui serait probablement de 4 octets.