5

我正在尝试使用 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 的选项。请帮助

谢谢奇丹巴拉姆

4

1 回答 1

6

似乎 pack struct 默认为 - 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.

于 2013-04-02T11:35:12.437 回答