argument.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "__virtualmath.h"
  2. static const struct option long_option[]={
  3. {"log-err",required_argument,NULL,'o'},
  4. {"log-out",required_argument,NULL,'e'},
  5. {NULL,0,NULL,0}
  6. };
  7. static const char *short_option = "o:e:";
  8. /**
  9. * 参数设置, args是全局结构体, 保存全局的参数设置
  10. * @param argc
  11. * @param argv
  12. * @return
  13. */
  14. int getArgs(const int argc, char **argv)
  15. {
  16. args.out_file = NULL;
  17. args.error_file = false;
  18. opterr = false;
  19. int opt;
  20. while((opt=getopt_long(argc, argv, short_option ,long_option,NULL))!=-1)
  21. {
  22. switch(opt)
  23. {
  24. case 0:
  25. break;
  26. case 'o':
  27. args.out_file = memStrcpy(optarg);
  28. break;
  29. case 'e':
  30. args.error_file = memStrcpy(optarg);
  31. break;
  32. case '?':
  33. fprintf(stderr, "[Error]: get not success args : -%c\n", (char)optopt);
  34. return -1;
  35. default:
  36. break;
  37. }
  38. }
  39. return 0;
  40. }
  41. /**
  42. * 释放args的成员而不包括其本身
  43. */
  44. void freeArgs(void){
  45. memFree(args.out_file);
  46. memFree(args.error_file);
  47. }