Почему extern int n не компилируется при объявлении n (в другом файле) static int n, но работает, когда объявляется int n? (Оба эти объявления были в области файлов.)
В принципе, почему int n в области файлов не совпадает с static int n в той же области? Это только по отношению к внешнему виду? Если да, то как насчет extern я не хватает?