在一个文件中定义变量但在另一个文件中未定义(共同声明 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];
我有一些功能在单独的文件中突出显示 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];