2013-04-02 43 views
3

我想使用gcc的-Wpadded选项来知道gcc是否可以帮助我找出结构是否填充或不填充。这是下面的代码。gcc -Wpadded不提供任何警告

#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的选项。好心帮

感谢 奇丹巴拉姆

+1

'char *'和'int'的大小是多少?如果它们相等,则不会有填充。 –

+0

@DanielFischer很好的接收,当我改变为'char name'我得到了警告。 – CHID

回答

4

似乎包结构默认为 - 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的。