如何在其他文件中包含的C函数中使用全局变量

时间:2016-09-19 17:10:33

标签: c

我有一个简单的程序,如:

int velocity=0;

#include "extra.h"

int main()
{
    extra();
    return 0;
}

其中extra.h是:

void extra(){
   velocity += 1;
}

然而当我编译它时,我收到错误:

extra.h:5:5: error: 'velocity' was not declared in this scope

显然,extra.h中的代码无法“看到”main.c中的变量,但为什么会这样?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以将以下声明添加到extra.h

extern int velocity;

但是,extra()首先不应在extra.h中定义。如果同一二进制文件中的多个extra.h文件包含.c,则会导致问题。以下是您应该拥有的:

extra.h

void extra();

extra.c

#include "extra.h"

static int velocity = 0;

void extra() {
   velocity += 1;
}

main.c

#include "extra.h"

int main()
{
    extra();
    return 0;
}