Before marking this as duplicate, I've already tried the "common header + extern variable" method.
From link:
In A.cpp (or) B.cpp write,
int gVariable = 10;
Remember to write the above definition in only one source file or else linker will complain of multiple symbols if you write in both the source files.
And in the common header of A.cpp, B.cpp write,
extern int gVariable;
when I want to include B.cpp into A.cpp(use B.cpp functions in A.cpp) in this example, it won't work. An example is here
Thanks