$ cat sample.c
#include <stdio.h>

struct A {
 int length;
 char tmp[0];
 char a, b, c;
} __attribute__((packed));
struct A buf;

int main()
{
 printf("sizeof(buf) = %u\n", sizeof(buf));
 return(0);
}
$ gcc sample.c -o sample
$ ./sample
sizeof(buf) = 7
$

↑これ FAQ? 結果が 8 になると思っていたのだが..