如何進(jìn)行調(diào)用C++函數(shù),相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
三明網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
在C++的語言中,和一些程序設(shè)計(jì)語言中,可以將一段經(jīng)常需要使用的代碼封裝起來,在需要使用時(shí)可以直接調(diào)用,這就是程序中所謂的函數(shù),下面就對C++中的如何調(diào)用C++函數(shù)問題進(jìn)行說明。
前陣子被問及一個(gè)在 C 中如何調(diào)用C++ 函數(shù)的問題 ,當(dāng)時(shí)簡單回答是將函數(shù) 用extern "C" 聲明,當(dāng)被問及如何將類內(nèi)成員函數(shù)聲明時(shí),一時(shí)語塞,后來網(wǎng)上查了下,網(wǎng)上有一翻譯C++ 之父的文章可以作為解答,遂拿來Mark 一下。
將 C++ 函數(shù)聲明為 ``extern "C"'' (在你的 C++ 代碼里做這個(gè)聲明),然后調(diào)用它(在你的 C 或者 C++ 代碼里調(diào)用)。例如:
// C++ code: extern "C" void f(int); void f(int i) { // ... }
當(dāng)然,這招只適用于非成員函數(shù)。如果你想要在 C 里調(diào)用成員函數(shù)(包括虛函數(shù)),則需要提供一個(gè)簡單的包裝( wrapper )。例如:
/* C code: */ void f(int); void cc(int i) { f(i); /* ... */ }
然后,你就可以這樣調(diào)用 C::f() :
// 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 里調(diào)用重載函數(shù),則必須提供不同名字的包裝,這樣才能被 C 代碼調(diào)用。例如 :
/* C code: */ void f_i(int); void f_d(double); void cccc(int i,double d) { f_i(i); f_d(d); /* ... */
然后,你可以這樣使用每個(gè)重載。
看完上述內(nèi)容,你們掌握如何進(jìn)行調(diào)用C++函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!