Итак, есть нормальное объявление в string.h:
extern void*  memset(void *, int, size_t);

Есть нормальная строчка
 memset(&engine, 0, sizeof(engine));

Эклипс подсвечивает её красным, пишет
Invalid arguments ' Candidates are: void * memset(void *, int, ?) '

То есть он как-то не смог распознать тип третьего аргумента в заголовке функции штоле?