我正在尝试使用gcc的-Wpadded选项来了解gcc是否可以帮助我找出结构是否填充。这是以下代码。
#include<stdio.h>
struct my {
char *name;
int age;
} my_details;
int main() {
struct my person1;
return 0;
}
我使用以下代码编写了代码。 gcc -Wpadded alignment_demo.c
。它没有返回任何警告。那么我的结构没有填充或我遗失了什么? man gcc
但是显示它支持名为-Wpadded的选项。请帮助
由于 奇丹巴拉姆
答案 0 :(得分:6)
似乎包结构默认为 - 4.(gcc -fpack-struct=4
)
如果是这样 - 比这个结构已经对齐。
因为
char* - 4 or 8 bytes
int - 4 bytes
如果你运行它,你会收到警告:
azat:~$ gcc -Wpadded -fpack-struct=8 -o test /tmp/test.c
/tmp/test.c:6:1: warning: padding struct size to alignment boundary [-Wpadded]
由于int
。