91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

函數(shù)的具體實(shí)現(xiàn)

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-03 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式軟件開(kāi)發(fā)中,一個(gè)項(xiàng)目往往需要多人協(xié)作完成。

比如A需要完成項(xiàng)目的整體邏輯功能,而整個(gè)邏輯功能包含許多具體的小功能,但A又沒(méi)有時(shí)間或能力來(lái)實(shí)現(xiàn)這些小功能,這時(shí)可以讓B來(lái)協(xié)助實(shí)現(xiàn)函數(shù)內(nèi)部的功能。

通常的思路是,B寫好某個(gè)函數(shù)后,A直接通過(guò)B聲明的函數(shù)調(diào)用即可。但這會(huì)有一些問(wèn)題,例如B寫好函數(shù)之后,A只能使用B聲明的函數(shù)名來(lái)使用,假如B聲明的函數(shù)名的命名規(guī)則很不符合A的口味,A用起來(lái)就很不爽,哈哈。那這樣怎么辦呢?聰明的A可以自己再聲明一個(gè)自己喜歡的函數(shù)名,并通過(guò)函數(shù)指針傳遞的功能來(lái)獲得B的功能。

下面來(lái)講一下具體實(shí)現(xiàn):

1 聲明函數(shù)指針-A負(fù)責(zé)

比如A需要一個(gè)求和功能的函數(shù),但他沒(méi)時(shí)間寫,他可以自己先聲明一個(gè)函數(shù)指針:

//a中聲明一個(gè)指針函數(shù),其函數(shù)內(nèi)部的功能需要另一個(gè)人b來(lái)完成 int (*mysum)(int, int)=0;

這個(gè)看起來(lái)和普通的函數(shù)聲明很像,都有函數(shù)名,返回值類型與參數(shù)類型,但該函數(shù)名前有一個(gè)星號(hào),表示它是函數(shù)指針,另外其函數(shù)實(shí)體可以先初始化為0。

2 函數(shù)指針賦值-A負(fù)責(zé)

這一步相當(dāng)于函數(shù)指針初始化,也相當(dāng)于函數(shù)注冊(cè),就是將A聲明的函數(shù)指針,通過(guò)指針賦值的方式,來(lái)獲得B實(shí)現(xiàn)的函數(shù)功能,相當(dāng)于是給B寫的函數(shù)套上一層A的殼:

//初始化指針函數(shù),傳入 b寫的函數(shù)的函數(shù)名,//通過(guò)函數(shù)指針賦值,main中聲明的函數(shù),就可以使用b寫的函數(shù)功能了 int init_mysum_func(int(*func_handle)(int,int)){            mysum = func_handle;            return 0;}
3 函數(shù)的具體實(shí)現(xiàn)-B負(fù)責(zé)

B這個(gè)人只要按照A聲明的函數(shù)指針的格式(返回值與參數(shù)類型一致,函數(shù)名可以隨意)完成函數(shù)內(nèi)部功能即可,這里以簡(jiǎn)單的求和為例,在b.h文件中,B實(shí)現(xiàn)的功能如下:

int sum_by_b(int a, int b){    returna+b;}
4 項(xiàng)目整理邏輯-A負(fù)責(zé)

項(xiàng)目邏輯很簡(jiǎn)單,就是求1+2的值,這時(shí)A在使用自己聲明的mysum之前,初始化(注冊(cè))一下該函數(shù)(將B寫的函數(shù)“sum_by_b”套上A寫的殼“mysum”),然后就可以使用了,使用實(shí)例如下:

int main(){    int res = 0;
    init_mysum_func(sum_by_b);//初始化指針函數(shù), 將 b完成的函數(shù)功能賦予a聲明的函數(shù) 
    res = mysum(1,2);//使用a聲明的求和函數(shù)進(jìn)行求和,其內(nèi)部實(shí)現(xiàn)其實(shí)的b完成的 
    printf("mysum(1,2) = %d",res);
    return 0;}

測(cè)試結(jié)果:

mysum(1,2) = 3--------------------------------Process exited after 0.007424 seconds with return value 0請(qǐng)按任意鍵繼續(xù). . .

原文標(biāo)題:嵌入式中的合作開(kāi)發(fā)——函數(shù)指針

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4418

    瀏覽量

    67587
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    250

    瀏覽量

    28074
  • 函數(shù)指針
    +關(guān)注

    關(guān)注

    2

    文章

    57

    瀏覽量

    4155

原文標(biāo)題:嵌入式中的合作開(kāi)發(fā)——函數(shù)指針

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DMA(Direct Memory Access)的具體原理和實(shí)現(xiàn)方法是什么

    ()、sf32lb_dma_start_dt() 等,用來(lái)從 DT 描述中直接初始化和啟動(dòng) DMA。[SF32LB DMA 輔助函數(shù)] 3. DMA 在具體外設(shè)中的應(yīng)用示例思路 知識(shí)源里沒(méi)有完整代碼示例,但給出了幾個(gè)典型場(chǎng)景
    發(fā)表于 02-12 10:16

    博世GTM IP模塊在車載系統(tǒng)中的具體實(shí)現(xiàn)方式與優(yōu)勢(shì)

    在汽車電子系統(tǒng)中,如何充分發(fā)揮 GTM IP的功能,以滿足復(fù)雜的系統(tǒng)級(jí)應(yīng)用場(chǎng)景,是用戶實(shí)現(xiàn)高效控制與精確響應(yīng)的關(guān)鍵。本文將聚焦幾個(gè)典型且核心的應(yīng)用實(shí)例,探討GTM IP在車載系統(tǒng)中的具體實(shí)現(xiàn)方式與優(yōu)勢(shì)。
    的頭像 發(fā)表于 12-30 17:36 ?714次閱讀
    博世GTM IP模塊在車載系統(tǒng)中的<b class='flag-5'>具體</b><b class='flag-5'>實(shí)現(xiàn)</b>方式與優(yōu)勢(shì)

    如何在Zephyr RTOS中實(shí)現(xiàn)延時(shí)和計(jì)時(shí)函數(shù)

    多種延時(shí)與計(jì)時(shí)實(shí)現(xiàn)方案,滿足不同應(yīng)用場(chǎng)景的需求。那么,大家平時(shí)都是怎么在MCU程序中實(shí)現(xiàn)計(jì)時(shí)函數(shù)、實(shí)現(xiàn)延時(shí)的呢?
    的頭像 發(fā)表于 12-26 10:32 ?5568次閱讀
    如何在Zephyr RTOS中<b class='flag-5'>實(shí)現(xiàn)</b>延時(shí)和計(jì)時(shí)<b class='flag-5'>函數(shù)</b>

    內(nèi)存拷貝函數(shù) memcpy原理及實(shí)現(xiàn)

    內(nèi)存拷貝函數(shù)memcpymemcpy是memory copy的縮寫,意為內(nèi)存復(fù)制,在寫C語(yǔ)言程序的時(shí)候,我們常常會(huì)用到它。它的函原型如下:void *memcpy(void *dest, const
    發(fā)表于 12-26 08:03

    蜂鳥(niǎo)E203的GPIO管腳使用

    和board_mcu200t.h文件includ到main里即可直接調(diào)用它們,birdv2_gpio.c文件是GPIO驅(qū)動(dòng)函數(shù)具體實(shí)現(xiàn),函數(shù)中GPIO_TypeDef *gpio在調(diào)
    發(fā)表于 10-30 07:25

    TCORDIC算法實(shí)現(xiàn)正余弦函數(shù)

    TCORDIC算法,由低延遲CORDIC算法和Taylor展開(kāi)組成。Taylor展開(kāi)計(jì)算作為CORDIC算法的補(bǔ)充,能夠結(jié)合CORDIC算法和Taylor展開(kāi)方式來(lái)計(jì)算浮點(diǎn)正余弦函數(shù),實(shí)現(xiàn)基于統(tǒng)一
    發(fā)表于 10-29 06:30

    計(jì)算程序執(zhí)行指令數(shù)的函數(shù)實(shí)現(xiàn)

    (來(lái)源:手把手教你設(shè)計(jì)cpu_RISC-V處理器),他們分別存儲(chǔ)了指令計(jì)數(shù)器的高低32位 至此就大致能理解指令數(shù)計(jì)算函數(shù)實(shí)現(xiàn)原理,即通過(guò)csrr指令讀minstreth和minstret寄存器得到執(zhí)行操作前后的指令計(jì)數(shù)值,再取其差值即可得到該操作耗費(fèi)的指令數(shù)。周期數(shù)計(jì)
    發(fā)表于 10-28 06:27

    使用函數(shù)實(shí)現(xiàn)三相電機(jī)正反轉(zhuǎn)控制

    在使用西門子S1200PLC,所使用的軟件是博途軟件,在這個(gè)軟件里運(yùn)用了塊的概念。比如我們常見(jiàn)的組織塊(OB)、函數(shù)塊(FB)、數(shù)據(jù)塊(DB)以及函數(shù)FC等。今天我們來(lái)具體交流一下這個(gè)函數(shù)
    的頭像 發(fā)表于 10-15 14:40 ?2746次閱讀
    使用<b class='flag-5'>函數(shù)</b>塊<b class='flag-5'>實(shí)現(xiàn)</b>三相電機(jī)正反轉(zhuǎn)控制

    數(shù)據(jù)濾波算法的具體實(shí)現(xiàn)步驟是怎樣的?

    ? 數(shù)據(jù)濾波算法在電能質(zhì)量在線監(jiān)測(cè)裝置中的具體實(shí)現(xiàn),需圍繞 “ 數(shù)據(jù)采集→預(yù)處理→算法執(zhí)行→參數(shù)適配→效果驗(yàn)證→結(jié)果輸出 ” 的全流程展開(kāi),核心是結(jié)合裝置硬件特性(采樣率、ADC 精度)和干擾類型
    的頭像 發(fā)表于 10-10 16:45 ?846次閱讀

    ulog_tag_lvl_filter_set()函數(shù)無(wú)法實(shí)現(xiàn)按照文檔說(shuō)明那樣實(shí)現(xiàn)按模塊過(guò)濾,怎么解決?

    ulog_tag_lvl_filter_set()函數(shù)無(wú)法實(shí)現(xiàn)按照文檔說(shuō)明那樣實(shí)現(xiàn)按模塊過(guò)濾,比如過(guò)濾掉所有drv.xxx的日志
    發(fā)表于 10-10 07:30

    請(qǐng)問(wèn)在移植rtthread nano版時(shí)官網(wǎng)里面系統(tǒng)時(shí)鐘函數(shù)在哪里實(shí)現(xiàn)的?

    我在已有的華大HC32開(kāi)發(fā)板的LED例程里我找不到官網(wǎng)移植教程里的這三個(gè)函數(shù),文檔也沒(méi)說(shuō)明這三個(gè)函數(shù)的移植步驟?到底在哪里找的?是rtthread里的實(shí)現(xiàn)還是需要用戶自己找函數(shù)
    發(fā)表于 09-26 08:09

    詳解hal_entry入口函數(shù)

    當(dāng)使用RTOS時(shí),程序從main函數(shù)開(kāi)始進(jìn)行線程調(diào)度;當(dāng)沒(méi)有使用RTOS時(shí),C語(yǔ)言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。由于我們新建的工程是沒(méi)有選用RTOS的,因此,
    的頭像 發(fā)表于 07-25 15:34 ?2035次閱讀

    函數(shù)指針的六個(gè)常見(jiàn)應(yīng)用場(chǎng)景

    函數(shù)指針在嵌入式開(kāi)發(fā)中有著廣泛的應(yīng)用,它讓代碼更加靈活,減少冗余,提高可擴(kuò)展性。很多時(shí)候,我們需要根據(jù)不同的情況動(dòng)態(tài)調(diào)用不同的函數(shù),而函數(shù)指針正是實(shí)現(xiàn)這一需求的重要工具。本文將介紹六個(gè)
    的頭像 發(fā)表于 04-07 11:58 ?1510次閱讀
    <b class='flag-5'>函數(shù)</b>指針的六個(gè)常見(jiàn)應(yīng)用場(chǎng)景

    詳解RTOS中的Hook函數(shù)

    Hook函數(shù)是RTOS中的一個(gè)關(guān)鍵特性,通過(guò)該函數(shù),用戶可以增強(qiáng)對(duì)任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?1101次閱讀

    解鎖TSMaster fifo函數(shù):報(bào)文讀取的高效方法

    前言:TSMaster目前有兩種讀取報(bào)文的模式:回調(diào)函數(shù)模式和fifo模式。fifo函數(shù)是TSMaster近期新增的函數(shù),本文將重點(diǎn)介紹fifo模塊。關(guān)于回調(diào)函數(shù)的使用方法可以參考幫助
    的頭像 發(fā)表于 03-14 20:04 ?1177次閱讀
    解鎖TSMaster fifo<b class='flag-5'>函數(shù)</b>:報(bào)文讀取的高效方法