Ric*_*dle 125
在fileA.c中:
int myGlobal = 0;
Run Code Online (Sandbox Code Playgroud)
在fileA.h中
extern int myGlobal;
Run Code Online (Sandbox Code Playgroud)
在fileB.c中:
#include "fileA.h"
myGlobal = 1;
Run Code Online (Sandbox Code Playgroud)
这就是它的工作原理:
int)Jef*_*ffP 10
如果变量是:
int foo;
Run Code Online (Sandbox Code Playgroud)
在第二个C文件中,您声明:
extern int foo;
Run Code Online (Sandbox Code Playgroud)
在99.9%的情况下,在文件之间共享非常量全局变量是不好的程序设计.实际需要这样做的情况非常少:它们非常罕见,我无法提出任何有效案例.也许是硬件寄存器的声明.
在大多数情况下,您应该使用(可能是内联的)setter/getter函数("public"),文件范围的静态变量("private")或不完整的类型实现("private").
在极少数情况下,当您需要在文件之间共享变量时,请执行以下操作:
// file.h
extern int my_var;
// file.c
#include "file.h"
int my_var = something;
// main.c
#include "file.h"
use(my_var);
Run Code Online (Sandbox Code Playgroud)
切勿将任何形式的变量定义放在h文件中.