C からの C++ の呼び出し

C++ 関数を C から呼び出すには、extern "C" を使用して C++ 関数を定義します。

Example 21. C から呼び出される C++ 関数の定義

struct S {        // ベースクラスまたは仮想関数が含まれていない
    S(int s) : i(s) { }
    int i;
}; extern "C" void cppfunc(S *p) {
// C から呼び出される C++ 関数の定義
// この関数は C++ で記述されている。リンケージのみが C。
    p->i += 5;
} 

C では、extern を使用して C++ 関数を宣言します。

Example 22. C 言語での関数の宣言と呼び出し

struct S {
    int i;
}; extern void cppfunc(struct S *p);
/* C から呼び出される C++ 関数の宣言 */
int f(void) {
    struct S s;
    s.i = 2;                /* 's' を初期化する */
    cppfunc(&s);            /* 'cppfunc' を呼び出して */
                            /* 's' を変更できるようにする */
    return s.i * 3;
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0471EJ
Non-ConfidentialID081711