將 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)
extern "c" void f_d(double 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
中斷中C函式呼叫C
之前,我們在微控制器程式開發時都會面對中斷函式。眾所周知的,這個中斷函式肯定是要用c函式來定義的。我在用c 進行程式開發的時候就發現了乙個需要解決了問題 在斷函式中怎麼呼叫c 的成員函式?我的中斷函式定義在檔案 irqhander.c 檔案中,我想在串列埠中斷函式呼叫 gprinter.putcha...
C中如何呼叫C 函式
1,在c中如何呼叫c 函式將函式用extern c 宣告 將 c 函式宣告為 extern c 在你的 c 裡做這個宣告 然後呼叫它 在你的 c 或者 c 裡呼叫 例如 c code extern c void f int void f int i 然後,你可以這樣使用 f c code void ...
在C中呼叫C 函式
由於c編譯器與c 編譯器之間的區別十分巨大,因此二者之間不可以直接互相呼叫各自的函式介面。但是,使用extern c 可以實現在c 中呼叫c 函式的功能,反之亦可。extern c 告訴c 編譯器,將花括號中的 按照c語言的規則進行編譯與鏈結。cppprint.cpp cppprint.h call...