typedef enum { POSITION_ASIS, POSITION_UNSPECIFIED } unit_position; typedef enum { STATUS_UNKNOWN, STATUS_UNSPECIFIED } unit_status; typedef struct { unit_position position; unit_status status; } unit_flags; extern void abort (void); void new_unit (unit_flags * flags) { if (flags->status == STATUS_UNSPECIFIED) flags->status = STATUS_UNKNOWN; if (flags->position == POSITION_UNSPECIFIED) flags->position = POSITION_ASIS; switch (flags->status) { case STATUS_UNKNOWN: break; default: abort (); } } int main() { unit_flags f; f.status = STATUS_UNSPECIFIED; new_unit (&f); return 0; }