色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言的面向接口編程

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-22 09:37 ? 次閱讀

面向接口是啥?

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

面向接口編程比面向對象要更牛嗎?為什么不直接玩面向對象編程呢?

其實bug菌這么多年開發過來,真正把C完完全全用面向對象的方式進行編寫是非常少的,像C++中的繼承、多態、虛函數等等面向對象特性,如果均用C語言來維護和實現是非常復雜的,并且你還不能保證沒有bug。

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

不過,話說回來,能夠在C語言中借鑒一些面向對象的語言特性和思想,確實能夠讓C代碼更加的優雅和靈活,所以今天聊聊面向接口編程,它僅僅只是面向對象的一部分,不過在一般的嵌入式開發中使用性價比還是比較高的。

面向接口編程

話不多說,先上一個面向接口編程的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:其中一種報文協議的簡單接口實現
 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:根據不同的類型,進行接口的初始化
 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:主題框架基本上不需要修改,這里只是簡單示例,你可以更復雜
 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:應用程序
 94*author:bug菌
 95*******************************************/
 96intmain(intargc,char*argv[]){
 97
 98protocolType1protocol;
 99
100Initial((structInterface*)&protocol,1);
101
102Process((structInterface*)&protocol);
103
104return0;
105}
運行結果:

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

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

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136704
  • 編程
    +關注

    關注

    88

    文章

    3614

    瀏覽量

    93686

原文標題:C語言實現面向接口編程

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NPU支持的編程語言有哪些

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

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,
    的頭像 發表于 11-01 16:51 ?302次閱讀

    單片機編程語言有哪些選擇

    常用的單片機編程語言,以及它們的特點和應用場景: 1. C語言 特點 :C語言是一種通用的
    的頭像 發表于 11-01 14:13 ?505次閱讀

    MCU編程語言和開發環境介紹

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

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對
    的頭像 發表于 10-29 17:31 ?317次閱讀

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

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

    Orin芯片的編程語言支持

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

    labview是什么編程語言寫的

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

    plc編程st語言怎么編

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

    PLC編程語言C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。
    的頭像 發表于 06-14 17:11 ?2785次閱讀

    為什么很少用C++開發單片機

    C語言面向過程的語言C++是面向對象的編程
    發表于 03-25 14:26 ?946次閱讀
    為什么很少用<b class='flag-5'>C</b>++開發單片機

    verilog與其他編程語言接口機制

    Verilog是一種硬件描述語言,用于描述數字電路的行為和結構。與其他編程語言相比,Verilog具有與硬件緊密結合的特點,因此其接口機制也有一些與眾不同之處。本文將詳細介紹Veril
    的頭像 發表于 02-23 10:22 ?692次閱讀

    plc編程語言c語言的聯系 c語言和PLC有什么區別

    PLC編程語言C語言的聯系 PLC(可編程邏輯控制器)是一種針對自動化控制系統的特殊計算機。PLC編程
    的頭像 發表于 02-05 14:21 ?4096次閱讀

    c語言,c++,java,python區別

    C語言C++、Java和Python是四種常見的編程語言,各有優點和特點。 C
    的頭像 發表于 02-05 14:11 ?2370次閱讀

    vb語言c++語言的區別

    Microsoft開發的一種面向對象的事件驅動編程語言。它的設計目標是簡化編程過程,讓初學者也能快速上手。與之相比,C++
    的頭像 發表于 02-01 10:20 ?2262次閱讀
    主站蜘蛛池模板: 亚洲国产精品日本无码网站| 日本午夜福利无码高清| 快穿做妓女好爽H| 美美哒免费影视8| 欧美久久综合网| 三级黄色在线免费观看| 无码人妻99久久密AV| 亚洲高清在线视频| 中国xxxxxxxxx孕交| 99视频免视看| 国产福利一区二区精品| 国产亚洲AV无码成人网站| 黄色天堂在线| 免费观看亚洲视频| 视频网站入口在线看| 亚洲色偷偷偷网站色偷一区人人藻 | 特黄特色大片免费播放器试看 | 野花日本大全免费高清完整版 | 竹菊精品久久久久久久99蜜桃| 99视频精品国产免费观看| 国产成人免费| 久久人妻无码毛片A片麻豆| 青青草国产自偷拍| 亚洲高清中文字幕| 97资源总站(中文字幕)| 国产精品亚洲第一区二区三区| 久久国产乱子伦精品免费M| 青草久久伊人| 亚洲日韩中文字幕日本有码| china18一19 第一次| 国内精品乱码卡一卡2卡三卡| 免费成人小视频| 性xxxx18公交车| 99久久亚洲| 后入式狂顶免费视频| 欧美性xxxx18| 一个人免费视频在线观看高清频道 | max girls 大感谢祭| 国产最猛性XXXX69交| 欧美日韩一区二区三区四区| 亚洲成色爱我久久|