如何在GNU编译器中控制struct元素之间的填充?

时间:2015-03-11 17:08:50

标签: c++ c struct pragma

在下面的代码中。当我打印单个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元素之间的填充?

0 个答案:

没有答案