/****************/
/***callback.h***/
/****************/
#ifndef CALLBACK_H
#define CALLBACK_H
#include <string.h>
typedef void (*my_printf)(void *);
void get_info(my_printf call_back,void * para)
{
call_back(para);
call_back(para);
call_back(para);
}
void str_printf(void *str)
{
printf("this is str_printf!\n");
printf("hello,%s!\n",(const char *)str);
}
typedef struct _addr
{
char ip[20];
int port;
_addr(){
ip[0]='\0';
port=-1;
}
_addr(const char *s,int d)
{
strcpy(ip,s);
port=d;
}
}addr;
void array_printf(void *num)
{
printf("this is array_printf!\n");
int * count=(int*)num;
if(*count<1)
{
printf("error!\n");
return;
}
for(int i=0;i<*count;++i)
{
printf("--%d--\n",i);
}
}
void struct_printf(void *para)
{
addr * tmp=(addr *) para;
printf("this is struct_printf!\n");
printf("ip=%s port=%d\n",tmp->ip,tmp->port);
}
#endif // CALLBACK_H
/****************/
/**callback.cpp**/
/****************/
#include "stdio.h"
#include "callback.h"
int main()
{
char str[10]="a sting";
int int_p=6;
addr *m_addr=new addr("192.168.3.1",5000);
get_info(str_printf,str);
get_info(array_printf,&int_p);
get_info(struct_printf,m_addr);
delete m_addr;
while(getchar()!='8')
continue;
return 0;
}