C28x的能够处理和支持的最小数据单位是16bits也就是常说的1个word,或者2个bytes,所以对Uint16进行sizeof操作的结果是1,这个也是你前面描述正确的。
但是你的问题跟这个没有关系,而是内存对齐的问题。因为理论上的内存分配是从Uint16开始,然后是Uint32,对于只有两个变量的结构体,它们占用的空间是Uint16的变量占用一个地址,其后的那个地址是空闲不使用的,然后是再之后连续两个地址用于存放Uint32的变量,你可以尝试交换它们的位置对比看一下,也可以在编译器手册中(spru513, spru514)搜索alignment进行更多了解。 If a post answers your question, please mark it with the "verify answer" button.
不可以,这个是编译器已经决定的,不过建议你可以仅对结构体的Uint16进行sizeof操作,然后再对Uint32进行sizeof操作后求和。 If a post answers your question, please mark it with the "verify answer" button.