第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

什么是C/C++接口庫(kù)

什么是C/C++接口庫(kù)

C++ C
斯蒂芬大帝 2019-04-10 06:05:13
什么是C/C++接口庫(kù)
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

接口庫(kù)是一種概念,主要看你說(shuō)的是哪方面的了。C和C++都有自己的標(biāo)準(zhǔn)庫(kù)函數(shù),有的人稱之為接口庫(kù),但真正的接口庫(kù)概念并非如此。
真正接口庫(kù)的概念是源自于一個(gè)設(shè)計(jì)理念,就是接口與實(shí)現(xiàn)分離。簡(jiǎn)單的講,假設(shè)有一個(gè)第三方庫(kù)叫A,我的應(yīng)用使用了A,如果A不是接口與實(shí)現(xiàn)分離的話,那么只要A有一點(diǎn)變動(dòng),我的應(yīng)用也需要重新編譯和生成。這樣的話,對(duì)于應(yīng)用庫(kù)A的人來(lái)說(shuō)就會(huì)很麻煩。所以,逐漸的程序設(shè)計(jì)開(kāi)始向著接口與實(shí)現(xiàn)分離的方向發(fā)展了。這也是面向?qū)ο?/a>逐漸延伸出來(lái)的概念。

查看完整回答
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

將 C++ 函數(shù)聲明為``extern "C"''(在你的 C++ 代碼里做這個(gè)聲明),然后調(diào)用它(在你的 C 或者 C++ 代碼里調(diào)用)。例如:
// C++ code:
extern "C" void f(int);
void f(int i)
{
// ...
}

然后,你可以這樣使用 f():
/* C code: */
void f(int);
void cc(int i)
{
f(i);
/* ... */
}

當(dāng)然,這招只適用于非成員函數(shù)。如果你想要在 C 里調(diào)用成員函數(shù)(包括虛函數(shù)),則需要提供一個(gè)簡(jiǎn)單的包裝(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);
}

然后,你就可以這樣調(diào)用 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 里調(diào)用重載函數(shù),則必須提供不同名字的包裝,這樣才能被 C 代碼調(diào)用。例如:
// 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); }

然后,你可以這樣使用每個(gè)重載的 f():
/* C code: */
void f_i(int);
void f_d(double);

void cccc(int i,double d)
{
f_i(i);
f_d(d);
/* ... */
}
注意,這些技巧也適用于在 C 里調(diào)用 C++ 類庫(kù),即使你不能(或者不想)修改 C++ 頭文件。

 


查看完整回答
反對(duì) 回復(fù) 2019-04-11
  • 2 回答
  • 0 關(guān)注
  • 986 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)