C中的全局变量和函数

Sam*_*ams 0 c variables global

对不起,这是一个基本问题,但我的所有研究都几乎没有回答我的问题,我只是想在我编写所有代码之前仔细检查.我正在使用C,我有一个头文件,其中声明了一些变量(ints,char数组,int数组).如果我有一个使用这些全局变量的函数,我假设我可以使用变量而不传递它们?

示例头文件:

int state;
int lnArray[];
Run Code Online (Sandbox Code Playgroud)

C文件:

void function(){ 
    int i;
    for(i=0;i<5;i++;){
        if(lnArray[i]<10)    
        state = lnArray[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 6

请注意,您编写的头文件定义了全局变量state(它声明了一个不完整的数组lnArray); 它应该只是声明它们:

extern int state;
extern int lnArray[];
Run Code Online (Sandbox Code Playgroud)

然后,在其中一个源文件(包含标题的源文件)中,您编写:

int state = 0;
int lnArray[XXX];   //  XXX is an enum or #define that gives the array size
Run Code Online (Sandbox Code Playgroud)

或者您可以使用初始化程序lnArray来提供数组大小.

如果您的编译器使用"通用定义"机制,您可能只是侥幸成功; 很多人.但添加一个初始化程序,你就被软管了.

另请参阅:C中的外部变量是什么?

请注意,全局变量通常不是一个好主意; 很难跟踪哪些代码正在访问它们并修改它们.人们竭尽全力避免全局变量.全局常数是另一回事; 他们提出的问题较少,但你仍然不会毫不犹豫地使用它们.