2013-03-01 88 views
1

我有一個變量,我打算在多個文件中使用,是一個互斥量初始值設定項。定義在多個源文件中使用的全局變量

於是我在一個頭文件中這樣寫道:

#ifndef LISTEN_H_ 
#define LISTEN_H_ 

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 

#endif 

我想包括在女巫我打算用變量的文件的頭部。

但我得到:錯誤互斥體已經在這裏聲明。

在多個頭文件中使用全局變量的正確方法是什麼?

回答

5

適當的方法是將.c文件定義它和聲明爲在頭文件extern。現在你可以在任何你想使用它的地方使用它,沒有錯誤。

+0

然後什麼是頭後衛的目的..? – 2013-03-01 08:49:15

+2

@ Mr.32包含守衛防止文件被多次包含在同一個翻譯單元中 - 即在編譯過程中。 – 2013-03-01 08:50:01

+2

@ Mr.32這個錯誤是由於在不同翻譯單元中定義的變量的多個副本 - 在鏈接階段。 – 2013-03-01 08:50:45