ExpertiDict

Rust · Avançado · Inglês · Técnico

repr C

/ˈɹɛpɚ siː/substantivo

Atributo #[repr(C)] que fixa o layout de uma struct ou enum como no C: campos na ordem declarada, com padding previsível. Necessário para trocar dados com código C.

Onde usar

Aparece em FFI, em formatos binários e em acesso a hardware. Sem ele, o Rust pode reordenar os campos para economizar espaço.

Em código

#[repr(C)]
struct Cabecalho {
  tipo: u8,
  tamanho: u32,
}
use std::mem::size_of;
println!("{}", size_of::<Cabecalho>());
// 8: u8 + 3 de padding + u32

Exemplos

Mark it repr C before passing it to the C library.

Marque com repr C antes de passar para a biblioteca em C.

Without repr C the field order isn't guaranteed.

Sem repr C a ordem dos campos não é garantida.

Cuidado

repr(C) só fixa ordem e alinhamento; não elimina o padding nem torna a struct automaticamente serializável.

Sinônimos

#[repr(C)]

Veja também

Todos os termos de Rust