定义要在多个源文件中使用的全局变量

opc*_*0de 2 c header-files

我有一个我打算在多个文件中使用的变量,是一个互斥初始化器.

所以我在一个头文件中写道:

#ifndef LISTEN_H_
#define LISTEN_H_

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

#endif
Run Code Online (Sandbox Code Playgroud)

我试图在文件中包含标题,我打算使用变量.

但我得到:错误互斥已经在这里宣布.

在多个头文件中使用全局变量的正确方法是什么?

Kar*_*k T 6

正确的方法是.c文件中定义它在头文件中声明它extern.现在,您可以在任何想要使用它的地方使用它,而不会出错.

  • @ Mr.32包含警卫防止文件被多次包含在同一翻译单元中 - 即在编译期间. (2认同)
  • @ Mr.32此错误是由于在链接阶段在不同翻译单元中定义的变量的多个副本. (2认同)