2013-03-01 2 views
1

У меня есть переменная, которую я намерен использовать в нескольких файлах, является инициализатором мьютекса.Определить глобальную переменную для использования в нескольких исходных файлах

Так что я написал в одном файле заголовка этого:

#ifndef LISTEN_H_ 
#define LISTEN_H_ 

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 

#endif 

Я попытался включить заголовок в файлы в ведьму я намереваюсь использовать переменную.

Но я понимаю: ошибка mutex уже объявлена ​​здесь.

Каков правильный способ использования глобальной переменной в нескольких файлах заголовков?

ответ

5

Правильный путь будет определить его в файле .c и объявим его как extern в файле заголовка. Теперь вы сможете использовать его везде, где хотите его использовать, без ошибок.

+0

то зачем нужна защита заголовка ..? –

+2

@ Mr.32 защитник включения предотвращает включение файла несколько раз в ту же единицу перевода - например, во время компиляции. –

+2

@ Mr.32 Эта ошибка связана с несколькими копиями переменных, определенных в разных единицах перевода - во время этапа компоновки. –

Смежные вопросы