使用外部变量和不使用外部变量的区别

Difference between using extern variable or not using extern variable

我对使用 "extern" 关键字的变量定义和声明有点困惑。假设我想要一个变量 'timer' 可以在多个 c 文件中使用。那我可以:

在 c1.h

int timer;

然后 c1.c

#include "c1.h"
void timer_increase() {
    timer++
}

然后 c2.c

#include "c1.h"
void print_timer() {
    printf("%d", timer);
}

但是,当我使用外部变量时:

在 c1.h

extern int timer;

然后 c1.c

#include "c1.h"
int timer;
void timer_increase() {
    timer++
}

然后 c2.c

#include "c1.h"
void print_timer() {
    printf("%d", timer);
}

两个脚本都工作正常,我看不出有任何理由必须使用 extern 来声明变量。谁能给我任何提示?

您必须定义一次变量并在 header 中声明它,以便其余文件对变量可见。

当您不在 header 文件中使用 extern 时,每次您都在多个文件中定义相同的变量。