2013-03-01 101 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