首页 > 解决方案 > 使用外部变量与不使用外部变量的区别

问题描述

我对使用“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 来声明变量的任何原因。谁能给我任何提示?

标签: cvariablesheaderextern

解决方案


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

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


推荐阅读