>>53
C++では関数の多重定義などの機能を、リンカの重大な変更無しに実現する
ために、「名前マングリング」を行う。

これは、同一名の関数の名前に異なる名前を付加し、異なった関数として扱う
ための内部的テクニックであって、コンパイラによってその実現方法は異なる
ものの、リンカに変更を加えていない処理系では大同小異である。

どのように「名前マングリング」が行われるのか直に目で見たければ、ソース
のコンパイル結果をアセンブリ出力して、関数にどんなラベルがついているか
見ればよい。

extern "C" キーワードは、そのような「名前マングリング」を行わないことを
コンパイラに指示し、従来のCでコンパイルされたオブジェクトとのリンクを可能
にする。