Проект, над которым я работал, включает перенос старого кода.Сейчас мы используем VS2010, но проект настроен на использование компилятора VS2008 и цепочки инструментов, но в конечном итоге мы, вероятно, перейдем к инструментальной цепочке VS2010.Рассматриваемая структура выглядит следующим образом:
struct HuffmanDecodeNode
{
union
{
TCHAR cSymbol;
struct
{
WORD nOneIndex;
WORD nZeroIndex;
} cChildren;
} uNodeData;
BYTE bLeaf;
}
По причинам, в которые я не буду вдаваться, sizeof(HuffmanDecodeNode)
должно быть 8. Я предполагаю, что на старых компиляторах это работало правильно, нотеперь я вижу, что размер равен 6, если я не добавлю несколько байтов заполнения.#pragma pack(show)
подтверждает, что данные должны быть выровнены на 4 байта, что, как я полагаю, было достаточным, но похоже, что более новый компилятор использует это только для выравнивания и не вставляет завершающие отступы в конце структуры.
Есть ли способ, которым я могу управлять конечным заполнением без , просто добавляя больше элементов структуры?