Я хочу использовать setjmp()
/longjmp()
для реализации системы coroutine.
Затем я решил написать небольшой .c-файл для тестирования. В MinGW все в порядке; я получил желаемый результат.
Но когда я компилирую его в MSVC++, программа аварийно завершается: "access violation"
#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;
}