1. コンセプト分析
リンカでは、異なる関数ごとに異なるシンボル名が必要です。C では
、名前ごとに関数が 1 つだけあるため、これは簡単です。内部のニーズを満たすために、C
言語コンパイラは
spiff
のような関数名を _spiff に変換する場合があります
。このアプローチは
C言語連携 ( C 言語連携
)と呼ばれます。
C++では
、同じ名前が複数の関数に対応する場合があり、これらの関数は異なるシンボル名に変換する必要があります。したがって、C++
コンパイラは名前マングリング (name mangling) を実行して
、オーバーロードされた関数に対して異なるシンボル名を生成します。たとえば、 spiff
(int) を _spoff_i に変換し
、
spiff
(double,
double
) を
_spiff_d_dに変換することができます
。このアプローチはC++
言語リンケージ ( C++ 言語リンケージ)と呼ばれます。
2. 利用シーン
1. C++ プログラムで
Cライブラリのプリコンパイルされた関数を
使用する
extern "C" void spiff(int);// 名前の検索には C プロトコルを使用します
2. C++ プログラムで C++ ライブラリのプリコンパイルされた関数を使用する
方法 1: extern void spoff(int);//デフォルトで 名前検索ポイントに C++ プロトコルを使用します
方法 2: extern "C++" void spaff(int);// 名前の検索に C++ プロトコルを使用して、
明示的に指摘します