C中呼叫C 函式

2021-12-30 00:23:21 字數 1026 閱讀 3502

將 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...