layout_packed_opaque.rs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #[repr(align(1), C)]
  2. pub union Align1Union {
  3. pub variant1: usize,
  4. pub variant2: *mut u8,
  5. }
  6. #[repr(align(4), C)]
  7. pub union Align4Union {
  8. pub variant1: usize,
  9. pub variant2: *mut u8,
  10. }
  11. #[repr(align(16), C)]
  12. pub union Align16Union {
  13. pub variant1: usize,
  14. pub variant2: *mut u8,
  15. }
  16. #[repr(align(1), C)]
  17. pub struct Align1Struct {
  18. pub arg1: usize,
  19. pub arg2: *mut u8,
  20. }
  21. #[repr(align(2), C)]
  22. pub struct Align2Struct {
  23. pub arg1: usize,
  24. pub arg2: *mut u8,
  25. }
  26. #[repr(align(4), C)]
  27. pub struct Align4Struct {
  28. pub arg1: usize,
  29. pub arg2: *mut u8,
  30. }
  31. #[repr(align(8), C)]
  32. pub struct Align8Struct {
  33. pub arg1: usize,
  34. pub arg2: *mut u8,
  35. }
  36. #[repr(align(32), C)]
  37. pub struct Align32Struct {
  38. pub arg1: usize,
  39. pub arg2: *mut u8,
  40. }
  41. // Opaque because packed is not defined.
  42. #[repr(packed, C)]
  43. pub struct OpaquePackedStruct {
  44. pub arg1: usize,
  45. pub arg2: *mut u8,
  46. }
  47. // Opaque because packed is not defined.
  48. #[repr(packed, C)]
  49. pub union OpaquePackedUnion {
  50. pub variant1: usize,
  51. pub variant2: *mut u8,
  52. }