C中如何調(diào)用C++函數(shù)

C中如何調(diào)用C++函數(shù)

ID:38467966

大?。?6.57 KB

頁數(shù):3頁

時間:2019-06-13

C中如何調(diào)用C++函數(shù)_第1頁
C中如何調(diào)用C++函數(shù)_第2頁
C中如何調(diào)用C++函數(shù)_第3頁
資源描述:

《C中如何調(diào)用C++函數(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、ZT:C中如何調(diào)用C++函數(shù)?(2009-11-0609:39:41)轉(zhuǎn)載標簽:c分類:C&C++?前陣子被問及一個在C中如何調(diào)用C++函數(shù)的問題,當時簡單回答是將函數(shù)用extern"C"聲明,當被問及如何將類內(nèi)成員函數(shù)聲明時,一時語塞,后來網(wǎng)上查了下,網(wǎng)上有一翻譯C++之父的文章可以作為解答,遂拿來Mark一下。?將C++函數(shù)聲明為``extern"C"''(在你的C++代碼里做這個聲明),然后調(diào)用它(在你的C或者C++代碼里調(diào)用)。例如://C++code:extern"C"voidf(int);voidf(inti

2、){//...}?然后,你可以這樣使用f():?voidf(int);voidcc(inti){f(i);}?當然,這招只適用于非成員函數(shù)。如果你想要在C里調(diào)用成員函數(shù)(包括虛函數(shù)),則需要提供一個簡單的包裝(wrapper)。例如://C++code:classC{//...virtualdoublef(int);};?extern"C"doublecall_C_f(C*p,inti)//wrapperfunction{returnp->f(i);}?然后,你就可以這樣調(diào)用C::f():?doublecall_C_f(

3、structC*p,inti);?voidccc(structC*p,inti){doubled=call_C_f(p,i);}?如果你想在C里調(diào)用重載函數(shù),則必須提供不同名字的包裝,這樣才能被C代碼調(diào)用。例如://C++code:voidf(int);voidf(double);?extern"C"voidf_i(inti){f(i);}extern"C"voidf_d(doubled){f(d);}?然后,你可以這樣使用每個重載的f():?voidf_i(int);voidf_d(double);?voidcccc(

4、inti,doubled){f_i(i);f_d(d);}注意,這些技巧也適用于在C里調(diào)用C++類庫,即使你不能(或者不想)修改C++頭文件。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。