>>7
struct {
  char c;
  achar a;
} b;

 printf("sizeof(achar):%u\n",sizeof(achar));
 printf("&b: %p\n", &b);
 printf("&b.a: %p\n", &b.a);

__aligned__は指定された型/変数が割り付けられるときに、
その先頭のalignmentを指定するだけ。
achar自体はあくまでもchar。
じゃなきゃ通常のchar*を受け取る関数が全く使えなくなる。