小编TZW*_*TZW的帖子

为什么setjmp/longjmp在MinGW中没有时会在MSVC上崩溃?

我想使用 setjmp()/ longjmp()来实现一个协程系统.然后我决定编写一个.c文件来测试它.在MinGW,没关系; 我得到了我想要的结果.但是当我在MSVC++中编译它时,程序崩溃:"访问冲突"

    #include <stdio.h>
    #include <stdlib.h>
    #include <setjmp.h>

    jmp_buf a;
    int is_invoke=0;

    void 
    action_1()
    {
        for ( ;; ) {
          printf("hello~~~A\n");
          if(!setjmp(a)) {
            is_invoke=1;
            return;
          }  
        }
    }

    void 
    func()
    {
      if (is_invoke) {
        longjmp(a,1);
      }
      action_1();
      printf("end\n");
    }

    void 
    dummy()
    {
      ;
    }

    int 
    main(int argc, char *argv[])
    {
        for ( ;; )  {
          func();
          dummy();
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c setjmp

5
推荐指数
1
解决办法
2269
查看次数

标签 统计

c ×1

setjmp ×1