struct empacotada para layout exato
Organize os bits sem preenchimento.
struct empacotada para layout exato é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
O Layout Importa
Às vezes, você precisa que os bytes tenham um formato exato, como em um registrador de hardware ou em um pacote de rede. É nesse caso que uma packed struct se destaca.
Structs Comuns Adicionam Preenchimento
Uma struct comum permite que Zig reorganize e preencha os campos para obter mais velocidade, portanto seu tamanho na memória pode ser maior que a soma das partes.
const Plain = struct {
flag: bool,
value: u32,
};Use packed struct
Escreva packed struct para que Zig armazene os campos consecutivamente, sem preenchimento e exatamente na ordem em que foram declarados.
const Tight = packed struct {
flag: bool,
value: u7,
};Ela é Compactada em Bits
Uma packed struct é medida em bits, não em bytes. Os campos acima usam 1 + 7 bits, cabendo perfeitamente em um único byte.
Um Inteiro de Suporte Conhecido
Como o layout é exato, uma packed struct tem um tipo de inteiro de suporte garantido que mantém todos os seus bits juntos.
const Flags = packed struct {
a: bool,
b: bool,
rest: u6,
};Converter para o Inteiro
Use @bitCast para transformar uma packed struct no inteiro de suporte, para que você possa armazená-la ou transmiti-la como um número bruto.
const f = Flags{ .a = true, .b = false, .rest = 0 };
const bits: u8 = @bitCast(f);Converter de Volta
O mesmo @bitCast lê um inteiro de volta como uma packed struct, decodificando bits brutos em campos nomeados que você pode usar.
const raw: u8 = 0b0000_0001;
const f: Flags = @bitCast(raw);Verificar o Tamanho Exato
Use @bitSizeOf para confirmar que uma packed struct ocupa exatamente a quantidade de bits esperada, sem nenhum preenchimento oculto.
const n = @bitSizeOf(Flags); // 8A Ordem da Declaração é o Layout
Em uma packed struct, o primeiro campo ocupa os bits menos significativos. A ordem define o layout; portanto, declare os campos exatamente como o formato exige.
Ótima para Protocolos
Packed structs correspondem diretamente a formatos binários, permitindo descrever um registrador de hardware ou um pacote de transmissão como campos nomeados e legíveis.
Uma Desvantagem a Conhecer
A compactação em bits pode tornar o acesso aos campos um pouco mais lento que em uma struct comum. Use packed somente quando o layout exato realmente importar. 🧩
Verificação Rápida
O que uma packed struct garante sobre seus campos?
Recapitulação
Você aprendeu que packed struct fornece um layout exato de bits, sem preenchimento, possui um inteiro de suporte e pode ser convertida com @bitCast. É perfeita para formatos binários. 🎉
Aprenda Zig com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “struct empacotada para layout exato” é grátis?
Sim — o texto completo de “struct empacotada para layout exato” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “struct empacotada para layout exato”?
Organize os bits sem preenchimento. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “struct empacotada para layout exato”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- struct empacotada para layout exato
- Inteiros de largura arbitrária, como u3
- Campos de bits e sinalizadores
- extern struct e layout ABI