c語言函數指針的多種賦值方法

 

 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章