3.15 C 言語と C++ 言語間での参照の受け渡し
C++ から C 関数を呼び出す際に、extern "C"
を使用して C 関数を宣言します。C から C++ 関数を呼び出す際に extern
を使用して C 関数を宣言し、extern "C"
として定義します。
C 言語と C++ 言語間での参照の受け渡すには、以下の手順を実行します。
手順
-
C 関数の
extern "C"
宣言を使用します。また、C++ 関数を extern "C"
として定義し、関数 C リンケージが含まれるように指定します。以下に例を示します。
// C++ から呼び出される C 関数の宣言
extern "C" int cfunc(const int&);
extern "C" int cppfunc(const int& r) { // C から呼び出される C++ 関数の定義 return 7 * r; } int f() { int i = 3; return cfunc(i); // ポインタを 'i' に渡す }
-
C 関数で、
extern
を使用して C++ 参照を宣言します。以下に例を示します。
/* C から呼び出される C++ 関数の宣言 */
extern int cppfunc(const int*); int cfunc(const int *p) { /* C++ から呼び出される C 関数の定義 */ int k = *p + 4; return cppfunc(&k); }