程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C中調用C++函數

C中調用C++函數

編輯:C++入門知識

將 C++ 函數聲明為``extern "C"''(在你的 C++ 代碼裡做這個聲明),然後調用它(在你的 C 或者 C++ 代碼裡調用)。例如:

// C++ code:

extern "C" void f(int);

void f(int i)

{

}

然後,你可以這樣使用 f():

/* C code: */

void f(int);

void cc(int i)

{

    f(i);

   }

當然,這招只適用於非成員函數。如果你想要在 C 裡調用成員函數(包括虛函數),則需要提供一個簡單的包裝(wrapper)。例如:

// C++ code:

class C

{

  // ...

  virtual double f(int);

};

extern "C" double call_C_f(C* p, int i) // wrapper function

{

  return p->f(i);

}

然後,你就可以這樣調用 C::f():

/* C code: */

double call_C_f(struct C* p, int i);

void ccc(struct C* p, int i)

{

  double d = call_C_f(p,i);

}

如果你想在 C 裡調用重載函數,則必須提供不同名字的包裝,這樣才能被 C 代碼調用。例如:

// C++ code:

void f(int);

void f(double);

extern "C" void f_i(int i) { f(i); }

extern "C" void f_d(double d) { f(d); }

然後,你可以這樣使用每個重載的 f():

/* C code: */

void f_i(int);

void f_d(double);

void cccc(int i,double d)

{

  f_i(i);

  f_d(d);

}


作者:fcsong000833

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved