#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)
#구조체안에 선언되어진 함수 실행하기(함수를 구조체 변수로 갖는경우)
#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.
#명령인자에 따른 각각의 함수로 분기하는 경우에 사용되는 형태의 코드기법입니다.
#주로 통신시에 서버와 클라이언트에서 주고받는 데이타에 따른 서버의 함수를 실행하고자 할때에 자주 사용됩니다.
#include<stdio.h>
#include<string.h>
#define SERCMD
typedef struct ser_map_t
{
char *cpMethod;
int (*fpProc)(char *, char *, char *);
}ser_map_t;
#ifdef SERCLI
int icsLoginClient (char *,char *,char *);
int icsDynBigSel (char *,char *,char *);
int icsCmdOsp (char *,char *,char *);
#endif
#ifdef SERCMD
int icsCmdOspMain(char *,char *,char *);
#endif
static ser_map_t ser_map_ims[] =
{
#ifdef SERCLI
{ "login_client", icsLoginClient },
{ "dynbigsel", icsDynBigSel },
{ "cmd_osp_check", icsCmdOsp },
#endif
#ifdef SERCMD
{ "cmd_osp_check_s", icsCmdOspMain },
#endif
{ NULL,NULL }
};
int
icsCmdOspMain(char *Rcomm, char *Param, char *cppMsg)
{
return(0);
}
int main(void)
{
int iRet, kk, Tot;
char *Rcomm, *Param, *cppMsg, method_cmd[100];
memset(method_cmd,0x00,sizeof(method_cmd));
strcpy(method_cmd, "cmd_osp_check_s");
Tot=(sizeof(ser_map_ims)/sizeof(ser_map_t))-1;
for(kk=0; kk<Tot; kk++)
{
if(strcmp(method_cmd, ser_map_ims[kk].cpMethod)==0)
{
iRet=ser_map_ims[kk].fpProc(Rcomm,Param,cppMsg);
printf("[%s]:[%d]\n",ser_map_ims[kk].cpMethod, iRet);
}
}
return(0);
}
'c 언어 > 중급과정' 카테고리의 다른 글
C언어 기초 - 쓰레드 이해하고 사용하는 방법(windows 10) (0) | 2021.11.16 |
---|---|
C# Timer.ElapsedEventHandler(tme_tick) 과 같은 효과(Linux) (0) | 2021.11.15 |
#ifdef ____KeyWord________________ (0) | 2021.08.05 |
컴파일과정에서 코드추가 가능(#define PIE 3.1416) (0) | 2021.08.05 |
Console Hexa, form Hexa by c language (0) | 2021.04.25 |