Global inline functions, consts and typedefs have internal linkage.
That means that the declarations in these two files do not interfere with each other:
//File1.c typedef int T; const int a = 12; inline T f (int i) { return i+a; } //File2.c typedef void T; const int a = 8; inline T f (double d) { cout << d; }
A const can be given external linkage by an explicit declaration:
//File3.c extern const int a; const int a = 77; //File4.c extern const int a; void g () { cout << a; } Here, g () will print 77.