И... автор сам-же и обосрался этим саммым лицом в ту самую грязь!
Строчечки следовало писать так:
e = ((struct test *)c)->one;
d = (*(struct test*)c).three;
На поедаемость редакторами правда правдивость кода ничуть не повлияла - дома найду вмварь с виндой и попробую скормить WC - уверен, что оно всё правильно переварит.
Собственно для того такое автодополнение и нужно - чтобы я на лету проверял адекватность написанного бреда.
=-