Por recomendações de boas práticas de programação, nos headers não deve haver declaração de variáveis ou constantes, dessa forma devem ser declarado dentro do arquivo C
O lembrete não é propriamente para o Aquino que está cansado de saber isso, além dele ser meu professor em c, mas sim para os iniciantes.
Grande Aquino, verifique se por engano não trocou as bolas:
Declaração é feita no header.
Definições no .c .
Suponho que deveria ser : "nos headers não deve
definir (em vez de declarar)...
Quando se declara, apenas informamos ao "compilador" que em algum lugar vamos
definir uma variável, conforme anunciada, e ao definir, o "compilador" vai atribuir valores na memo. Por exemplo, no .h podemos declarar uma struct que só vai ser criada de fato na memória quando for definida, normalmente em um .c .
Por outro lado, C é uma questão de estilo. Há quem declare uma variável como extern no arquivo fonte e a defina em outro arquivo fonte.
Outros preferem definir uma var em um arquivo fonte e ao usar em outros arquivo fonte, declarar com extern no seu header do fonte associado.
Há linguagem que não usam arquivos header e quem quiser, poderia fazer tudo no fonte, sem .h, uma erezia para os puristas do C. Prefiro usar os headers para declarações ficarem organizadas, fácil leitura e busca.
Definição e Declaração: Chato é o cara que escreve essas baboseiras só pra mostrar que pensa que sabe algo!