extern int a = 7;
extern int b = 6;
extern int c = 5;
Think about the scope for abuse here.
Another file could quite legitimately have
extern int a = 5;
extern int b = 6;
extern int c = 7;
Which is why you got the warning.
Which set of initialisers is the correct one?