2013-04-02 48 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的。