我已经阅读了有关 C 中结构填充的内容:http: //bytes.com/topic/c/answers/543879-what-structure-padding 并在文章之后写了这段代码,应该打印出“结构垫”的大小像 16 字节,'struct pad2' 的大小应该是 12。-我想。我用 gcc 编译了这段代码,进行了不同级别的优化,甚至 sizeof() 运算符都给了我 16 个字节。为什么?
由于 PS3 机器,这些信息对我来说是必要的,其中字节边界和对完整 dma 传输的利用很重要:
#include <stdio.h>
#include <stdlib.h>
struct pad
{
char c1; // 1 byte
short s1; // 2 byte
short s2; // 2 byte
char c2; // 1 byte
long l1; // 4 byte
char c3; // 1 byte
};
struct pad2
{
long l1;
short s1;
short s2;
char c1;
char c2;
char c3;
};
int main(void)
{
struct pad P1;
printf("%d\n", sizeof(P1));
struct pad P2;
printf("%d\n", sizeof(P2));
return EXIT_SUCCESS;
}