extern ってコンパイル時の名前(変数名、関数名、ラベル等)の付け方を指定するって認識であってる?

C++のコンパイル後のバイナリー見たら関数名に任意の番号付いた文字列が並んでたから
「ああ、.cppファイル毎に同じ名前の関数が使えるのはこういうふうに名前いじってるからで、
externつけるといじらない(アンダーバーは付けるけど)から各cppから呼び出せるのか」
って考えたんだけど。