struct my_data {
unsigned char data1;
unsigned char data2;
unsigned char data3;
unsigned char data4;
}TAG_MY_DATA;
#define IPRINT(...) {char _bt[128]; snprintf(_bt, sizeof(_bt)-1, __VA_ARGS__);\
fprintf(stdout, "%s", _bt);}
int main(int argc, char** argv)
{
IPRINT("Main Start!!!!!\n");
syslog(LOG_ERR|LOG_USER,"test - %m\n");
openlog("SyslogTest", LOG_CONS | LOG_PID, 0);
syslog(LOG_DEBUG,"This is a syslog test message generated by program '%s'/n",argv[0]);
closelog();
return 0;
}
int main(int argc, char** argv)
{
const char *optstring="";
int c,deb,index;
void *m_data;
struct option opts[]={{"string",required_argument,NULL,'s'},
{"version",no_argument,NULL,'v'},
{"debug",no_argument,&deb,1}, {0,0,0,0}};
m_data = malloc(sizeof(TAG_MY_DATA));
if (m_data == NULL)
{
printf("memory alloc failed\n");
}
else
{
memset(m_data, 0, sizeof(struct my_data));
((struct my_data *)m_data)->data1 = 1; //void *指针强制转换
free(m_data); printf("memory alloc success and free now\n");
}
while((c=getopt_long_only(argc,argv,optstring,opts,&index))!=-1)
{
switch(c)
{ case 's':
printf("username is %s\n",optarg);
input_arg[1] = strdup(optarg);
printf("username is %s\n",input_arg[1]);
break;
case 'v':
printf("version is 0.0.1 \n");
break;
case 0:
printf("debug is %d\n",deb); break;
default: printf("c is %c\n",c);
break;
}
}
return 0;
}