日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基于C语言的函数指针应用-消息命令处理框架

發(fā)布時(shí)間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于C语言的函数指针应用-消息命令处理框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)述

大家都知道,在C語(yǔ)音中指針的地位很重要,各種指針,功能很強(qiáng)大!但是用不好,指針也比較容易出問(wèn)題。
這里介紹的是函數(shù)指針的一種應(yīng)用方法,即使用函數(shù)指針來(lái)實(shí)現(xiàn)消息命令的注冊(cè)與回調(diào)處理。

代碼

測(cè)試的處理函數(shù),這里為了測(cè)試,都是空函數(shù):

#include? #include?"test_msg_proc.h"void?proc_msg_reg(int?cmd,?const?void?*pData,?int?len) {printf("in?proc_msg_reg??,?cmd:?%d,?data:?%s,?data?len:?%d\n",?cmd,?(const?char?*)pData,?len);//處理數(shù)據(jù) }void?proc_msg_login(int?cmd,?const?void?*pData,?int?len) {printf("in?proc_msg_login,?cmd:?%d,?data:?%s,?data?len:?%d\n",?cmd,?(const?char?*)pData,?len);//處理數(shù)據(jù) }void?proc_msg_test(int?cmd,?const?void?*pData,?int?len) {printf("in?proc_msg_test?,?cmd:?%d,?data:?%s,?data?len:?%d\n",?cmd,?(const?char?*)pData,?len);//處理數(shù)據(jù) }

函數(shù)指針定義:

//函數(shù)指針 typedef?void?(*pfunc)(int?,?const?void?*,?int?);

消息處理節(jié)點(diǎn)信息結(jié)構(gòu)體:

//消息處理節(jié)點(diǎn)信息結(jié)構(gòu)體 typedef?struct?MsgProcNodeInfo {int?cmd;??????????//消息名字char?name[64];????//用于存儲(chǔ)消息名字,方便調(diào)試pfunc?func;???//處理回調(diào)函數(shù) }MsgProcNodeInfoSt;

接下來(lái)是一個(gè)消息信息結(jié)構(gòu)體的數(shù)組定義,也就是關(guān)鍵部分,消息命令的注冊(cè)表:

//消息處理注冊(cè)表,注冊(cè)命令字與其對(duì)應(yīng)的處理函數(shù) static??MsgProcNodeInfoSt?msgMap[]= {{0,?"regCmd",???proc_msg_reg},{1,?"loginCmd",?proc_msg_login},{2,?"testCmd",??proc_msg_test}, };

主處理函數(shù),用于根據(jù)命令字在注冊(cè)表里查找對(duì)應(yīng)的處理函數(shù),然后回調(diào)處理。這里面有個(gè)小技巧,如果命令字與數(shù)組索引正好是一致的,那可以直接拿命令字作為數(shù)組的下表去索引對(duì)應(yīng)的節(jié)點(diǎn)調(diào)用其函數(shù)指針即可。

//處理函數(shù) void?proc_msg(int?cmd,?const?void?*pData,?int?len) { #if?1//處理int?i?=?0;?for?(?i?=?0;?i?<?sizeof(msgMap)/sizeof(MsgProcNodeInfoSt);?i ?){if?(?msgMap[i].cmd?!=?cmd?)continue;if?(?msgMap[i].func?==?NULL?)continue;msgMap[i].func(cmd,?pData,?len);}#else?????//如果命令字正好與數(shù)組索引相同,也可以這樣取巧,直接拿命令字作為索引用if?(?cmd?>=?sizeof(msgMap)/sizeof(MsgProcNodeInfoSt)?)?//越界判斷return;msgMap[cmd].func(cmd,?pData,?len); #endif???? }

主函數(shù):

#include? #include?"test_msg_proc.h"int?main(int?argc,?char?**argv) {proc_msg(0,?"注冊(cè)",?sizeof("注冊(cè)"));proc_msg(1,?"登錄",?sizeof("登錄"));proc_msg(2,?"測(cè)試",?sizeof("測(cè)試"));return?0; }

編譯運(yùn)行結(jié)果

編譯:

[fens@fens?app/test_func_point]$make? gcc?-Wall??-I.?-c?main.c?-o?main.o? gcc?-Wall??-I.?-c?test_msg_proc.c?-o?test_msg_proc.o? gcc?./main.o?./test_msg_proc.o?-o?test?-Wall??-I.?-lpthread strip?test

運(yùn)行:

[fens@fens?app/test_func_point]$./test in?proc_msg_reg??,?cmd:?0,?data:?注冊(cè),?data?len:?7 in?proc_msg_login,?cmd:?1,?data:?登錄,?data?len:?7 in?proc_msg_test?,?cmd:?2,?data:?測(cè)試,?data?len:?7

從上面的打印可以看出,命令字處理的時(shí)候都對(duì)應(yīng)到了注冊(cè)的回調(diào)函數(shù)。

在實(shí)際用時(shí),數(shù)據(jù)的內(nèi)容可以是十六進(jìn)制數(shù)據(jù),命令字也可以改為字符串格式。

聲明:

本文于網(wǎng)絡(luò)整理,版權(quán)歸原作者所有,如來(lái)源信息有誤或侵犯權(quán)益,請(qǐng)聯(lián)系我們刪除或授權(quán)事宜。

總結(jié)

以上是生活随笔為你收集整理的基于C语言的函数指针应用-消息命令处理框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国内精品福利视频 | 99热自拍偷拍 | 亚洲欧美天堂网 | www.波多野结衣.com | 九色视频自拍 | 嫩草一区 | 免费毛片一区二区三区久久久 | 91激情视频在线观看 | 日本高清不卡一区 | 免费啪视频 | 久久精品人人做人人爽 | 国产在视频线精品视频 | 高h校园不许穿内裤h调教 | 亚洲一区二区在线看 | 色综合日韩 | 亚洲精品国产精品乱码不卡 | av小说在线观看 | 69亚洲乱人伦 | 日本久操视频 | 玉米地疯狂的吸允她的奶视频 | 人人草人人射 | 亚洲精品电影在线 | 少妇激情一区二区三区视频 | 天天干夜夜草 | 久久久久久九九九九 | 韩国一二三区 | 黄色一级国产 | 露脸啪啪清纯大学生美女 | 国产黄色一级网站 | 2020av在线| 丰满少妇久久久久久久 | 四虎精品视频 | 97人妻精品一区二区三区免 | 精品人妻人伦一区二区有限公司 | 超碰网站在线 | 韩国日本中文字幕 | 精品无码三级在线观看视频 | 免费看国产曰批40分钟粉红裤头 | 日韩网站在线 | xxx毛片 | 欧洲美女av| 日韩激情电影在线 | 久久一本精品 | 精品一区二区三区视频 | 欧美成人看片黄a免费看 | 日韩欧美一区二区在线 | 男人添女人下部高潮全视频 | 在线a网站 | 永久免费在线 | 调教小屁屁白丝丨vk | 影音先锋每日资源 | 91精品国产入口 | 久久人人精品 | 水果派解说av | 中文毛片| 日韩在线中文字幕 | 久久艹精品视频 | 91资源在线观看 | 69av导航 | 男人午夜免费视频 | 久久久久久久久久久久久女过产乱 | 国产精品乱码久久久久久久久 | 狂野欧美性猛交xxⅹ李丽珍 | 人人草人人射 | 成人在线网站 | 精品国产人妻一区二区三区 | 国产99久久久久久免费看 | 国产高潮流白浆喷水视频 | 手机看片国产精品 | 懂色av一区二区 | av大全免费 | 狠狠干影院| 欧美激情在线一区二区 | 伊人黄色网 | 亚洲综合伊人久久 | 久久久久久香蕉 | 免费视频一二三区 | 日本一区免费看 | 天天综合亚洲 | 日韩av无码中文字幕 | 亚洲第一天堂网 | 91最新国产 | 亚洲中文字幕一区在线 | 黄色片91 | 国产精品一国产精品 | 日韩国产成人无码av毛片 | 久久免费观看视频 | 天天天天射 | 女生毛片 | 国产酒店自拍 | 性xxxx另类xxⅹ | 欧美高清视频一区二区 | 亚洲一线av| 男人天堂2020 | 免费看黄色片的网站 | 日韩成人中文字幕 | 欧美一区二区三区久久成人精品 | 国产在线久久久 | 欧美一区二区免费电影 |