C ++ Declspec выровнять - PullRequest
       37

C ++ Declspec выровнять

2 голосов
/ 30 сентября 2010

Привет, я новичок в Visual C ++, Может кто-нибудь объяснить, что ConfParams () , объявленный в структуре, делает

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

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

Может кто-то объяснить, что делает ConfParams (), объявленный в структуре

Это объявление конструктора.

В C ++, кроме уровня доступности по умолчанию struct и class эквивалентны. struct по умолчанию имеет public членов, class по умолчанию имеет private членов.


Мне не ясно, почему ваша тема ссылается на __declspec, но если это то, что вы хотите знать о , см. Здесь

Функции-члены не имеют выравнивания, затрагиваются только данные.

1 голос
/ 30 сентября 2010

Google говорит

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

"Используйте __declspec (align (#)) для точного управления выравниванием пользовательских данных (например, статических распределений или автоматических данных вfunction) "

Это заставит компилятор запускать каждый экземпляр на границе байта.Без этого экземпляры были бы выровнены по естественной границе машины - что, вероятно, составило бы 4 байта.

...