c語言函數指針的多種賦值方法
提供框架模型,具體代碼縮略,適合功能模塊包裝,例子程序爲c語言基於TCP的圖片發送
1、mdu_TcpClient.h中:
定義結構體
typedef struct
{
int (*init)(char *szIpaddr, char *wTcpPort); //初始化tcp客戶端
//發送數據
int (*sendData)(unsigned int ntskId, unsigned int nsize, long long ntimestamp, char *pStream);
void (*close)(void);
}MDU_TCPCLIENT_ARG_T;
2、mdu_TcpClient.c中:
各個子函數的定義,具體內容縮略
int initiation(char *szIpaddr, char *wTcpPort)
{
...
}
int sendPack(unsigned int ntskId,unsigned int nsize, long long ntimestamp, char *pStream)
{
...
}
void close_tcpclient(void)
{
...
}
結構體函數指針賦值
MDU_TCPCLIENT_ARG_T mdu_tcpclient_arg = {
.init = initiation,
.sendData = sendPack,
.close = close_tcpclient,
};
或者如下
MDU_TCPCLIENT_ARG_T mdu_tcpclient_arg = {
initiation,
sendPack,
close_tcpclient,
};
3、client_main.c中
主函數調用
int main(int argc, char *argv[])
{
...
//函數指針調用
if(mdu_tcpclient_arg.sendData(12,1024,1230*1230, PicName)!=1)
{
...
}
...
...
}
END