когда мы должны использовать packsize, чтобы указать структуру struct? - PullRequest
1 голос
/ 08 февраля 2012

Иногда я думаю, что мы можем указать размер пакета, чтобы указать расположение структуры.Мне интересно, если есть какой-либо случай, мы должны указать размер упаковки?

Ответы [ 4 ]

3 голосов
/ 08 февраля 2012

Когда вам нужно, чтобы макет памяти точно соответствовал двоичному формату, определенному в другом месте, например.форматы файлов или сетевые протоколы.

1 голос
/ 08 февраля 2012

Как правило, этого следует избегать.Крайние случаи, когда это уместно, - это использование структур для связи между машинами различной архитектуры (например, в данных, передаваемых по сети).Однако даже в этом случае вы должны знать обо всей поддерживаемой архитектуре, которая имеет какие-либо проблемы с выравниванием (например, если она разрешает доступ только на границе четырехугольника).

0 голосов
/ 08 февраля 2012

Если вы говорите о #pragma pack, это используется для указания выравнивания данных .Если вы хотите получить размер структуры (например, для выделения памяти), используйте оператор sizeof.

structSize = sizeof( myStructType );
0 голосов
/ 08 февраля 2012

Единственный раз, когда я использовал его, было, когда у меня была программа VB, вызывающая DLL C ++.Структуры должны были соответствовать или не работали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...