оно и видно ))
это пример как КАТЕГОРИЧЕСКИ делать НЕ НУЖНО ))
если смотреть по вашему примеру, то вы объявляете тип структуры в заголовочном файле, судя по наличию этой "конструкции":
#ifndef _sensor
#define _sensor
и в нем же по неведомой причине создаете ее экземпляр:
struct sensor_general_type sensor_general;
И чтобы избежать очевидных проблем с таким "решением", плодите себе очевидные костыли:
#define sensor_first_appear
А это когда в умных книжках по си (которому уже небось полвека от роду) пишут черным по белому - экземпляры создавать ТОЛЬКО в объектных С-файлах, а в хедерах максимум объявлять тип!
если уж вам так нужны глобальные объекты структур, то создавайте их экземпляры по возможности в одном месте, в одном С-файле, а в хедерах ТОЛЬКО ОБЪЯВЛЕНИЯ их типов
и туда же соотв. extern если нужно, чтобы другие объектные файлы "видели" эти глобальные объекты, если прям уж без них никак не получается )