我有一个简单的程序,如:
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中的变量,但为什么会这样?我该如何解决这个问题?
答案 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;
}