layout_aligned_opaque.rs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #[repr(packed, C)]
  2. pub struct PackedStruct {
  3. pub arg1: usize,
  4. pub arg2: *mut u8,
  5. }
  6. #[repr(packed, C)]
  7. pub union PackedUnion {
  8. pub variant1: usize,
  9. pub variant2: *mut u8,
  10. }
  11. // Opaque because aligned_n is not defined.
  12. #[repr(align(1), C)]
  13. pub union OpaqueAlign1Union {
  14. pub variant1: usize,
  15. pub variant2: *mut u8,
  16. }
  17. // Opaque because aligned_n is not defined.
  18. #[repr(align(4), C)]
  19. pub union OpaqueAlign4Union {
  20. pub variant1: usize,
  21. pub variant2: *mut u8,
  22. }
  23. // Opaque because aligned_n is not defined.
  24. #[repr(align(16), C)]
  25. pub union OpaqueAlign16Union {
  26. pub variant1: usize,
  27. pub variant2: *mut u8,
  28. }
  29. // Opaque because aligned_n is not defined.
  30. #[repr(align(1), C)]
  31. pub struct OpaqueAlign1Struct {
  32. pub arg1: usize,
  33. pub arg2: *mut u8,
  34. }
  35. // Opaque because aligned_n is not defined.
  36. #[repr(align(2), C)]
  37. pub struct OpaqueAlign2Struct {
  38. pub arg1: usize,
  39. pub arg2: *mut u8,
  40. }
  41. // Opaque because aligned_n is not defined.
  42. #[repr(align(4), C)]
  43. pub struct OpaqueAlign4Struct {
  44. pub arg1: usize,
  45. pub arg2: *mut u8,
  46. }
  47. // Opaque because aligned_n is not defined.
  48. #[repr(align(8), C)]
  49. pub struct OpaqueAlign8Struct {
  50. pub arg1: usize,
  51. pub arg2: *mut u8,
  52. }
  53. // Opaque because aligned_n is not defined.
  54. #[repr(align(32), C)]
  55. pub struct OpaqueAlign32Struct {
  56. pub arg1: usize,
  57. pub arg2: *mut u8,
  58. }