2016-09-19 80 views
-3

我有一個簡單的程序,如:如何在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代碼不能「看到」麥變量n.c,但爲什麼呢?我該如何解決?

+0

嘗試把速度變量.h文件來代替。 – uvr

+2

@uvr這當然不是一個好的做法。 –

+0

http://stackoverflow.com/questions/10422034/when-to-use-extern-in-c – willll

回答

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; 
} 
相關問題