[H8-ML(1890)] Re: 3068F Lan$B%^%$%3%s$KIU(B $BB0$N(BC$B%3%s%Q%$%i$N%P%0(B( $B;EMM(B?)
From: serow@xxxxxxxxxxxxxxxxxx (TANAKA Yoshitomo)
Date: 2002年05月30日(木)21時38分52秒
In article <3CF61172.66A775CB@xxxxxxxxxxxxx>,
(*_*) Masahiro Ochiai <user@xxxxxxxxxxxxx> wrote:
>
>確かにgcc-2.95.3はそうなりますね。この構造体ですが、
>
>	unsigned char : 0;
>
>っておかしくないですか? 0ビットを割り当てる?
>ダミーで1ビットスキップさせるのなら
>
>	unsigned char : 1;
>
>になると思うのですが...やってみたらうまくコード生成できました。それが原因では?
>

たぶん :1 の間違いなんでしょうけれど、
:0としたばあい、設定によってアラインメントを調整する働きがあるようです。
H8/300のですと、gcc/config/h8300/h8300.h で

/* Alignment of field after `int : 0' in a structure.  */
/* One can argue this should be 32 for -mint32, but since 32 bit ints only
   need 16 bit alignment, this is left as is so that -mint32 doesn't change
   structure layouts.  */
#define EMPTY_FIELD_BOUNDARY 16

となっていますので、元記事の動作はコンパイラのバグでは無く
正しい動作であると言えると思います(上のコメントではintになってますが、
実際には型はなんでも同じみたいな気がします)。
-- 
----_--__---_-_-_-__--_-__-__---_-_----_--_-_---_---_----
_/     TANAKA Yoshitomo       _//
/  Suginami-ku Tokyo, Japan  _// serow@xxxxxxxxxxxxxxxxxx
スレッド概略
[1887(R)](起点)
 └[1889(U)]
   └[表示中]
     └[1891(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]