main.c 1010 B

123456789101112131415161718192021222324252627282930313233
  1. #include "hellovm.h"
  2. int main(int argc, char *argv[]) {
  3. Inter *inter = NULL;
  4. char arr_cwd[200];
  5. getcwd(arr_cwd, 200);
  6. #ifdef DEBUG
  7. setbuf(stdout, NULL); // debug模式下关闭缓冲区以尽快输出信息便于debug
  8. setbuf(stderr, NULL);
  9. setbuf(stdin, NULL);
  10. #endif
  11. atexit(freeArgs);
  12. signal(SIGINT, SIG_IGN);
  13. if (setjmp(memVirtualMath_Env) == -1){
  14. fprintf(stderr, "ERROR: Fatal memory error encountered, May be caused by insufficient memory!\n");
  15. return 1;
  16. }
  17. memVirtualMathUseJmp = true;
  18. if (getArgs(argc, argv) == -1) // 命令行参数设定
  19. return 2;
  20. initVirtualMath(args.locale);
  21. inter = makeInter(args.out_file, args.error_file, args.in_file, arr_cwd, NULL);
  22. runCodeFile(inter, argv + optind); // 从文件中运行代码
  23. if (args.run_commandLine)
  24. runCodeStdin(inter, HelloString); // 从stdin中运行代码
  25. freeInter(inter, true);
  26. fgetwc(stdin); // 按任意键继续...
  27. return 0;
  28. }