3.15 C 言語と C++ 言語間での参照の受け渡し

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

C 言語と C++ 言語間での参照の受け渡すには、以下の手順を実行します。

手順

  1. 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' に渡す }
    
  2. C 関数で、extern を使用して C++ 参照を宣言します。以下に例を示します。
    /* C から呼び出される C++ 関数の宣言 */
    extern int cppfunc(const int*);     int cfunc(const int *p) {            /* C++ から呼び出される C 関数の定義 */     int k = *p + 4;     return cppfunc(&k); }
    
非機密扱いPDF file icon PDF 版ARM DUI0471JJ
Copyright © 2010-2013 ARM.All rights reserved.