在一个文件中定义变量但在另一个文件中未定义(共同声明 header)

Define variable in one file but it's undefined in another (declared in common header)

我有一些功能在单独的文件中突出显示 functionality.c。此文件中的代码读取 functionality.h:

中的阈值
unsigned int thresold1[2];
unsigned int thresold2[2];
void *watcher(void *);

我还有 main.c 文件,我试图在其中配置这些阈值:

#include "functionality.h"

int main(void) {
    /* ... */
    int ret;
    pthread_t watcher_thread;
    thresold1[0] = 10;
    thresold1[1] = 50;
    ret = pthread_create(&watcher_thread, NULL, watcher, NULL);
    if (ret) {
        /* ... */
    }
    /* ... */
}

但是当我试图从 functionality.c 访问 watcher() 中的这些阈值时,所有这些数组值都被清零,即未定义。我哪里错了?

P.S。 functionality.h 也包含在 functionality.c

UPD:我是这样编译的:

gcc -pthread main.c functionality.c -o main

变量应在头文件中声明为:

extern unsigned int thresold1[2];
extern unsigned int thresold2[2];

并在唯一点(.c 文件)中定义为:

unsigned int thresold1[2];
unsigned int thresold2[2];