是否在C中定义了结构类型的对齐方式?

eva*_*ing 3 c struct memory-alignment

我知道C结构中的成员与他们需要的任何边界对齐.

struct S {
  uint8_t ui8;
  /* invisible padding here */
  uint32_t ui32;
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,struct S是否定义了实例的对齐方式?

struct S my_s; 
Run Code Online (Sandbox Code Playgroud)

是否my_s定义了对齐?是否struct Sui32成为其第一个成员是否重要?

我搜索过但只找到了关于struct member alignment的信息.

unw*_*ind 5

是的,它将具有对齐要求,是的,它将取决于成员的类型struct.

C11规范草案说:

完整对象类型具有对齐要求,这些要求对可以分配该类型的对象的地址施加限制.

和:

可以使用_Alignof表达式查询完整类型的对齐要求 .