syslog和getopt_long_only的使用和void *指针强制转换



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; 
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值