$ cat a.c #include "b.c" static int foo = 42; int main(int argc, char ** argv) { foo=argc; // dummy code return foo; // dummy code } $ cat b.c static int foo = 42; $ cc -Wall -pedantic a.c a.c:3:12: error: redefinition of ‘foo’ 3 | static int foo = 42; | ^~~ In file included from a.c:1: b.c:1:12: note: previous definition of ‘foo’ with type ‘int’ 1 | static int foo = 42; | ^~~ b.c:1:12: warning: ‘foo’ defined but not used [-Wunused-variable] $