Вы забыли упомянуть, то define в main.c расположен до всех инклюдов, не так ли? Как верно подметил коллега ыыыы, у Лябруса тоже применена такая техника против повторного написания объявления переменных.
Например, для изменения типа переменной надо сделать правку только в одном месте.