Por que meus guardas de compilação não estão impedindo inclusões de várias definições?

Eu tenho um arquivo de cabeçalho x.h incluído em mais de um arquivo de origem * .c. Este arquivo de cabeçalho possui algumas variáveis de estrutura definidas.

Eu coloquei várias proteções de prevenção de inclusão no início do arquivo de cabeçalho como:

#ifndef X_H
#define X_H
...
..
//header file declarations and definitons.


#endif//X_H

Na construção, recebo erros do vinculador relacionados a várias definições. Eu entendo o problema.

Um protetor de prevenção de inclusão múltipla na parte superior do arquivo de cabeçalho, como evitar, evita várias inclusões do arquivo de cabeçalho x.he evita várias definições das variáveis existentes em x.h?

#pragma uma vez que não funciona nesse compilador específico, então qual é a solução? Alguém postouesta responda a uma pergunta semelhante. Não parece funcionar para mim. Como esta solução funciona?

questionAnswers(6)

yourAnswerToTheQuestion