我正在尝试使用 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 的选项。请帮忙
谢谢
奇丹巴拉姆
似乎 pack struct 默认值是 - 4。(gcc -fpack-struct=4
)
如果是这样 - 那么这个结构已经对齐了。
Because
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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)