在下面的代码中。当我打印单个char数组大小时,它会打印正确的值。 但是当我一次打印整个struct大小时,它会为每个char数组添加一个字节。
如何在GNU C ++编译器中使用#pragma控制struct中元素之间的填充?我可以将它设置为0吗?
#include <iostream>
using namespace std;
typedef struct s1{
char test[15];
char t2[15];
}s1;
typedef struct s2{
int message_id;
int message_size;
}s2;
typedef struct s3{
char test[15];
char t2[15];
int a;
}s3;
typedef struct s4{
char test[15];
int a;
}s4;
int main() {
s4 st;
cout<<sizeof(s1)<<endl;
cout<<sizeof(s2)<<endl;
cout<<sizeof(s3)<<endl;
cout<<sizeof(s4)<<endl;
cout<<sizeof(st.test)<<endl;
return 0;
}
----------------------- OUTPUT --------------------
30
8
36
20
15
如何控制struct元素之间的填充?