溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何寫(xiě)好C代碼之ssc網(wǎng)站架設(shè)

發(fā)布時(shí)間:2020-06-22 18:40:49 來(lái)源:網(wǎng)絡(luò) 閱讀:238 作者:douyongzai 欄目:編程語(yǔ)言

對(duì)應(yīng)于面向?qū)ο笳Z(yǔ)言的構(gòu)造函數(shù)注入,ssc網(wǎng)站架設(shè)【企鵝21717-93408】C語(yǔ)言作為過(guò)程語(yǔ)言,參數(shù)注入法是最簡(jiǎn)單、也是最直接的方法。最常見(jiàn)的排序方法qsort就是用這種方法:

void qsort(void base, size_t num, size_t size, int (compar)(const void,const void));
可以看到qsort函數(shù)的第四個(gè)參數(shù)compar就是外部依賴(lài)的對(duì)象(函數(shù)),因?yàn)椴煌瑘?chǎng)景有不同的比較元素大小的方式,通過(guò)參數(shù)將外部依賴(lài)注入,使該函數(shù)更加具有通用型,因?yàn)閷?shí)際上我們用qsort,只是用他的排序算法,其他的都是和具體使用場(chǎng)景有關(guān)。

設(shè)置(set)接口注入
上一篇我們介紹的設(shè)置回調(diào)函數(shù)的方法其實(shí)就是使用這種方法,其本質(zhì)就是專(zhuān)門(mén)對(duì)外提供一個(gè)接口,用來(lái)將依賴(lài)的外部對(duì)象或者函數(shù)注入到本模塊中來(lái)。比如開(kāi)發(fā)一個(gè)模塊,需要申請(qǐng)內(nèi)存,但是為了易用性,除了使用系統(tǒng)自帶的內(nèi)存申請(qǐng)函數(shù),我們需要支持第三方的內(nèi)存池模塊來(lái)申請(qǐng)內(nèi)存,我們就可以提供一個(gè)API來(lái)設(shè)置申請(qǐng)和釋放內(nèi)存的函數(shù),如下示例:

///默認(rèn)申請(qǐng)內(nèi)存方式為系統(tǒng)自帶的函數(shù)
static void (malloc_function)(size_t size) = malloc;
static void (free_function)(void p) = free;

int sample_module_init()
{
return 0;
}

///設(shè)置新的分配內(nèi)存的函數(shù)
int sample_module_set_memory_api(void (get)(size_t size), void(put)(void p))
{
malloc_function = get;
free_function = put;

return 0;

}

///申請(qǐng)一個(gè)size大小的int類(lèi)型數(shù)組
int sample_module_create_int_array(size_t size)
{
int p = (int )malloc_function(sizeof(int) * size);
return p;
}

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI