Top-Down Structs

Regan Heath regan at netwin.co.nz
Sun Mar 12 01:08:59 PST 2006


On Sun, 12 Mar 2006 02:02:48 +0100, Bob W <nospam at aol.com> wrote:
> I just wanted to add this info:
>
> Check INPUT_RECORD.sizeof if it is declared before
> and after its related sub-structs. In the first case
> the size of INPUT_RECORD will be 4, otherwise the
> size is 20.

Interestingly naming the union fixes the problem. eg.

struct INPUT_RECORD {
	WORD EventType;
	union bob {
		KEY_EVENT_RECORD KeyEvent;
		MOUSE_EVENT_RECORD MouseEvent;
		WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
		MENU_EVENT_RECORD MenuEvent;
		FOCUS_EVENT_RECORD FocusEvent;
	}
	bob a;
}

(rest of wrong declaration order as given by OP)

results in an INPUT_RECORD.sizeof of 20. I think the bug lies in the  
handling of anonymous unions.

Regan



More information about the Digitalmars-d-bugs mailing list