В первом файле (asynccallbacks.h
):
// Explicit definition, this actually allocates
// as well as describing
int Global_Variable;
// Function prototype (declaration), assumes
// defined elsewhere, normally from include file.
void SomeFunction(void);
int main(void) {
Global_Variable = 1;
SomeFunction();
return 0;
}
Во втором файле (action.c
):
// Implicit declaration, this only describes and
// assumes allocated elsewhere, normally from include
extern int Global_Variable;
// Function header (definition)
void SomeFunction(void) {
++Global_Variable;
}
В этом примере определяется переменная Global_Variableв asynccallbacks.h
.Чтобы использовать ту же переменную в action.h
, она должна быть объявлена.Независимо от количества файлов, глобальная переменная определяется только один раз;однако он должен быть объявлен в любом файле, кроме того, который содержит определение.