Почему мои средства защиты от компиляции не предотвращают включение нескольких определений?

У меня есть файл заголовка x.h, который включен более чем в один исходный файл * .c. В этом заголовочном файле определены некоторые структурные переменные.

Я поместил защиту от множественных включений в начало заголовочного файла как:

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


#endif//X_H

При сборке я получаю ошибки компоновщика, связанные с несколькими определениями. Я понимаю проблему.

Разве защита от многократного включения в верхней части файла заголовка, как у меня, не будет предотвращать множественные включения в файл заголовка x.h и, таким образом, избегать множественных определений переменных, которые есть в x.h?

#pragma однажды не работает на этом конкретном компиляторе, так в чем же решение? Кто-то написалэтот ответ на аналогичный вопрос. Кажется, это не работает для меня. Как работает это решение?

Ответы на вопрос(6)

Ваш ответ на вопрос