在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

C語言的面向接口編程

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-22 09:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

面向接口是啥?

不用慌,其實(shí)面向接口編程不是什么新鮮玩意,說得直白點(diǎn)就是函數(shù)指針的使用,不過我覺得可以形成一種編程的思想來指導(dǎo)嵌入式程序設(shè)計(jì),特別是對于降低代碼的耦合還是比較奏效的。

面向接口編程比面向?qū)ο笠幔繛槭裁床恢苯油婷嫦驅(qū)ο缶幊棠兀?/span>

其實(shí)bug菌這么多年開發(fā)過來,真正把C完完全全用面向?qū)ο蟮姆绞竭M(jìn)行編寫是非常少的,像C++中的繼承、多態(tài)、虛函數(shù)等等面向?qū)ο筇匦?/span>,如果均用C語言來維護(hù)和實(shí)現(xiàn)是非常復(fù)雜的,并且你還不能保證沒有bug。

再說了你寫了一堆代碼讓C的特性更加的像C++,那為什么不直接使用C++呢?難道你覺得那些特性你能用C寫得比C++更好?別重復(fù)造輪子了。

不過,話說回來,能夠在C語言中借鑒一些面向?qū)ο蟮恼Z言特性和思想,確實(shí)能夠讓C代碼更加的優(yōu)雅和靈活,所以今天聊聊面向接口編程,它僅僅只是面向?qū)ο蟮囊徊糠郑贿^在一般的嵌入式開發(fā)中使用性價(jià)比還是比較高的。

面向接口編程

話不多說,先上一個(gè)面向接口編程的Demo:

參考demo:
  1#include
  2#include
  3
  4/********************************************
  5*Note:共用接口的定義
  6*author:bug菌
  7*******************************************/
  8structInterface{
  9int(*Initial)(void*handle);
 10int(*Send)(void*handle,char*buff,intcount);
 11int(*Recv)(void*handle,char*buff);
 12int(*Destory)(void*handle);
 13};
 14
 15/********************************************
 16*Note:具體類型的定義
 17*author:bug菌
 18*******************************************/
 19typedefstruct_tag_protocolType1{
 20structInterfacebi;//公共通信接口
 21char*CommTypeName;//通信名稱
 22//不同通信類型的其他成員......
 23}protocolType1;
 24
 25
 26/********************************************
 27*Note:其中一種報(bào)文協(xié)議的簡單接口實(shí)現(xiàn)
 28*author:bug菌
 29*******************************************/
 30voidprotocol_Initial(void*handle)
 31{
 32protocolType1*p=(protocolType1*)handle;
 33p->CommTypeName="protocolType1";//可以通過公共接口傳參訪問原對象的所有成員
 34
 35printf("%sInitial
",p->CommTypeName);
 36}
 37
 38voidprotocol_Send(void*handle,char*buff,intcount)
 39{
 40protocolType1*p=(protocolType1*)handle;
 41
 42printf("%sSend
",p->CommTypeName);
 43}
 44
 45voidprotocol_Recv(void*handle,char*buff)
 46{
 47protocolType1*p=(protocolType1*)handle;
 48
 49printf("%sRecv
",p->CommTypeName);
 50}
 51
 52voidprotocol_Destory(void*handle)
 53{
 54protocolType1*p=(protocolType1*)handle;
 55
 56printf("%sDestory
",p->CommTypeName);
 57}
 58
 59/********************************************
 60*Note:根據(jù)不同的類型,進(jìn)行接口的初始化
 61*author:bug菌
 62*******************************************/
 63voidInitial(structInterface*pInterface,inttype)
 64{
 65pInterface->Initial=protocol_Initial;
 66
 67pInterface->Send=protocol_Send;
 68
 69pInterface->Recv=protocol_Recv;
 70
 71pInterface->Destory=protocol_Destory;
 72
 73}
 74
 75/********************************************
 76*Note:主題框架基本上不需要修改,這里只是簡單示例,你可以更復(fù)雜
 77*author:bug菌
 78*******************************************/
 79voidProcess(structInterface*pInterface)
 80{
 81pInterface->Initial(pInterface);
 82
 83pInterface->Send(pInterface,NULL,0);
 84
 85pInterface->Recv(pInterface,NULL);
 86
 87pInterface->Destory(pInterface);
 88
 89}
 90
 91
 92/********************************************
 93*Note:應(yīng)用程序
 94*author:bug菌
 95*******************************************/
 96intmain(intargc,char*argv[]){
 97
 98protocolType1protocol;
 99
100Initial((structInterface*)&protocol,1);
101
102Process((structInterface*)&protocol);
103
104return0;
105}
運(yùn)行結(jié)果:

2c69be42-f1ca-11ec-ba43-dac502259ad0.png

分析一下:
對于一名合格的程序員,代碼show出來,本文就沒有寫下去的必要了,不過為了全文的整體性,還是啰嗦幾句。其實(shí)面向接口編程所采用就是面向?qū)ο缶幊讨械睦^承,只不過它把所有的公共接口全部抽象出來供框架程序進(jìn)行調(diào)用。這樣當(dāng)我們需要增加其他類型的對象處理時(shí),可以通過構(gòu)造并替換不同的接口函數(shù)來進(jìn)行處理,從而使得整體程序改動(dòng)最小。凡是一種復(fù)用的架構(gòu)都會(huì)犧牲一定的性能,不過也會(huì)增加程序的可維護(hù)性,降低程序的耦合度,如果你開發(fā)的項(xiàng)目并不是很復(fù)雜, 也確定了以后接口不會(huì)有新的變化,其實(shí)不使用接口也是OK的。對于自動(dòng)測試程序框架,接口的預(yù)留是非常重要的,可以通過虛擬接口來測試業(yè)務(wù)邏輯,能夠模擬更多實(shí)際環(huán)境下不同的工況來進(jìn)行測試。

審核編輯 :李倩


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

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141020
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3686

    瀏覽量

    95049

原文標(biāo)題:C語言實(shí)現(xiàn)面向接口編程

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    單片機(jī)c語言編程實(shí)例大全

    單片機(jī)c語言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?3次下載

    深入理解C語言C語言循環(huán)控制

    C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),C
    的頭像 發(fā)表于 04-29 18:49 ?1025次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制

    gitee 支持的編程語言有哪些

    Gitee 支持的常見編程語言: Python :一種廣泛使用的高級(jí)編程語言,以其清晰的語法和代碼可讀性而聞名。 Java :一種面向對象
    的頭像 發(fā)表于 01-06 09:50 ?642次閱讀

    Triton編譯器支持的編程語言

    Triton編譯器支持的編程語言主要包括以下幾種: 一、主要編程語言 Python :Triton編譯器通過Python接口提供了對Trit
    的頭像 發(fā)表于 12-24 17:33 ?922次閱讀

    NPU支持的編程語言有哪些

    與NPU一起使用: C/C++ : CC++是性能要求較高的應(yīng)用的首選語言,尤其是在需要直接與硬件交互的場景中。許多NPU硬件都提供了
    的頭像 發(fā)表于 11-15 09:21 ?1856次閱讀

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,
    的頭像 發(fā)表于 11-01 16:51 ?1153次閱讀

    單片機(jī)編程語言有哪些選擇

    常用的單片機(jī)編程語言,以及它們的特點(diǎn)和應(yīng)用場景: 1. C語言 特點(diǎn) :C語言是一種通用的
    的頭像 發(fā)表于 11-01 14:13 ?2314次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級(jí)編程語言,它們使得開發(fā)者能夠更高效地開
    的頭像 發(fā)表于 11-01 11:51 ?2122次閱讀

    C語言與Java語言的對比

    C語言和Java語言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢和特點(diǎn),適用于不同的應(yīng)用場景。以下將從語法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對
    的頭像 發(fā)表于 10-29 17:31 ?1014次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選
    的頭像 發(fā)表于 10-29 17:30 ?1004次閱讀

    Orin芯片的編程語言支持

    語言支持 Orin芯片支持多種編程語言,以滿足不同開發(fā)者的需求。其中,C/C++和Python是兩種廣泛應(yīng)用的
    的頭像 發(fā)表于 10-27 16:45 ?939次閱讀

    plc編程語言編程相關(guān)技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關(guān)編程技巧是工業(yè)自動(dòng)化領(lǐng)域中不可或缺的知識(shí)。 一、PLC編程語言
    的頭像 發(fā)表于 10-21 16:56 ?1043次閱讀

    labview是什么編程語言寫的

    的一種圖形化編程語言。它并不是用傳統(tǒng)的文本編程語言(如C++、Python等)編寫的,而是采用了一種獨(dú)特的圖形化
    的頭像 發(fā)表于 09-04 16:00 ?2125次閱讀

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語言是一種高級(jí)編程語言,它類似于Pascal或
    的頭像 發(fā)表于 08-25 10:05 ?2685次閱讀

    按照這樣學(xué)習(xí)C語言,成為卷王不是夢!

    在計(jì)算機(jī)編程領(lǐng)域,C語言被譽(yù)為一種強(qiáng)大而靈活的編程語言,掌握好C
    的頭像 發(fā)表于 07-06 08:04 ?604次閱讀
    按照這樣學(xué)習(xí)<b class='flag-5'>C</b><b class='flag-5'>語言</b>,成為卷王不是夢!
    主站蜘蛛池模板: 一级片免费在线观看视频 | 色多多视频网站 | 玖玖草在线观看 | 伊人网成人| 国产香蕉75在线播放 | 国产女人水多白浆 | 国产美女在线精品观看 | 天天干影院 | 国产一级做a爰大片免费久久 | 手机看片国产高清 | 亚洲一区高清 | 亚洲一级特黄 | 国产成人精品免费视频大全可播放的 | 欧美色欧美色 | 久久网免费视频 | 波多野结衣50连精喷在线 | 成人夜色香网站在线观看 | 午夜神马嘿嘿 | 久久久久亚洲香蕉网 | 影音先锋色偷偷米奇四色 | 日日碰狠狠添天天爽五月婷 | 国产精品香蕉在线一区 | 欧美一级三级在线观看 | 五月婷婷爱 | 美女张开腿让男生桶出水 | 中文字幕在线一区二区三区 | 青草91视频免费观看 | 国产精品三级国语在线看 | 日本最新免费网站 | 日韩一区二区三区在线 | 一个色中文字幕 | 深夜国产成人福利在线观看女同 | 久久天天躁狠狠躁狠狠躁 | 一级待一黄aaa大片在线还看 | 激情五月婷婷基地 | 四虎影院免费观看 | 天堂在线观看视频观看www | 日本三级黄视频 | 国内视频一区二区三区 | 欧美高清性色生活 | 四虎传媒 |