Hi,all When gcc processes a strucure declaration, what rules it will use? As far as I know, gcc is supposed to conform to the platform ABI. For example, below is extracted from the SysV i386 ABI: - An entire structure or union object is aligned on the same boundary as its most strictly aligned member. - Each member is assigned to the lowest available offset with the appropriate alignment. This may require internal padding, depending on the previous member. - A structure's size is increased, if necessary, to make it a multiple of the alignment. This may require tail padding, depending on the last member. So, should gcc (whatever versions) always comform to these rules (assume we don't specify special attributes or options)? I ask this question because I just read the paper "stable_api_nonsense" by Greg KH from Linux kernel Documentation, and begin with line 54 the paper says "Depending on the version of the C compiler you use, different kernel data structures will contain different alignment of structures". Thanks YC Wang