名前修飾
次のようなよくあるC++の例
は、引き続くシンボルを修飾しないことを指示する。すなわち、コンパイラはあたかもCコンパイラであるかのように、修飾なしの名前を用いたバイナリを吐く。Cが名前修飾を利用していないので、C++コンパイラもそれらの識別子を参照する際に名前修飾を避けなければならない。
例として、標準的な文字列ライブラリ <string.h> は、通常次のようなコードを含む:
そこで、次のコード
は、正しい、修飾されない strcmp および memset を用いることになる。extern が用いられなければ、C++コンパイラは同等の次のコードを生成するだろう。
これらのシンボルはCのランタイムライブラリ(例えば libc)には存在しないので、リンカはエラーを報告することになる。