Pode ser definido, mas não é recomendado definir variáveis no arquivo de cabeçalho.
Como muitos arquivos .c podem conter arquivos .h, isso significa que essa variável terá uma cópia em muitos arquivos .c. Se este for um projeto de vários arquivos, durante a fase de vinculação, o vinculador irá reclamar que existem várias variáveis globais com o mesmo nome de variável, resultando em erros de link.
Portanto, o arquivo .h geralmente só pode conter declarações de variáveis globais, declarações de funções e definições de macro.Não é recomendado definir variáveis no arquivo .h.
Se você declarar uma variável em um arquivo de cabeçalho e, em seguida, chamar o arquivo de cabeçalho em arquivos de origem diferentes, isso fará com que o compilador relate um erro de que a variável é definida repetidamente (mesmo se #ifndef xxxxx for escrito).
A solução é declarar a variável no arquivo .c correspondente e externar a variável no arquivo de cabeçalho.
Em example.c
int a = 0;
Em example.h
extern int a;
Então, outros arquivos c #include "example.h"
estão bem.