The only other use for extern that I can think of is in C++ where you want to call a function that was written in C and whose name wasn't mangled, e.g.
extern "C" someCfunc(int a,int b,int c);
When C++ generates the code for someCfunc() it won't mangle the name and so you won't get a "missing symbol" error for something cryptic like someCfunc#III (actual name will depend on the compiler).