LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Ты прикидываешься или в самом деле?

#include <stdio.h>

struct data {
        unsigned short a1;
        unsigned char   a2;
        unsigned short a3;
        unsigned short a4;
        unsigned char    a5;
        unsigned short a6;
        unsigned short a7;
        unsigned short bufer[1200];
};

struct __attribute__ ((packed)) data2 {
        unsigned short a1;
        unsigned char   a2;
        unsigned short a3;
        unsigned short a4;
        unsigned char    a5;
        unsigned short a6;
        unsigned short a7;
        unsigned short bufer[1200];
};

int
main()
{
        printf("unpacked: %d\n", sizeof(struct data));
        printf("packed:   %d\n", sizeof(struct data2));
        return 0;
}
unpacked: 2414
packed:   2412

Выводы делай сам.

PS: заполнять структуры memcpy — плохой тон и гарантированный способ выстрелить себе в ногу. Выше уже всё сказано.

Исходная версия beastie, :

Ты прикидываешься или в самом деле?

#include <stdio.h>

struct data {
        unsigned short a1;
        unsigned char   a2;
        unsigned short a3;
        unsigned short a4;
        unsigned char    a5;
        unsigned short a6;
        unsigned short a7;
        unsigned short bufer[1200];
};

struct __attribute__ ((packed)) data2 {
        unsigned short a1;
        unsigned char   a2;
        unsigned short a3;
        unsigned short a4;
        unsigned char    a5;
        unsigned short a6;
        unsigned short a7;
        unsigned short bufer[1200];
};

int
main()
{
        printf("unpacked: %d\n", sizeof(struct data));
        printf("packed:   %d\n", sizeof(struct data2));
        return 0;
}
unpacked: 2414
packed:   2412

Выводы делай сам.