Neither gcc nor clang (with -std=c99 -Wall -W -pedantic) gives an error or warning.
Code:
// file1.c ///////////////////////////////
#include <stdio.h>
int Global_Variable;
void SomeFunction(void);
int main(void)
{
printf("%d\n", Global_Variable); // prints 0
SomeFunction();
printf("%d\n", Global_Variable); // prints 99
return 0;
}
// file2.c ///////////////////////////////
int Global_Variable;
void SomeFunction(void) {
Global_Variable = 99;
}
The only way to get them to complain is if you add an initializer to both of them.