visualc中的协同程序&x2B+; 我试图用VisualC++实现协同程序库,但是我注意到有两个函数缺失: sigsetjmp, siglongjmp, setcontext, getcontext, swapcontext, longjmp, setjmp

visualc中的协同程序&x2B+; 我试图用VisualC++实现协同程序库,但是我注意到有两个函数缺失: sigsetjmp, siglongjmp, setcontext, getcontext, swapcontext, longjmp, setjmp,c++,windows,visual-c++,C++,Windows,Visual C++,我查看了Windows SDK,没有导出类似的函数。我知道有光纤功能,但我希望使用汇编实现更快的方法。他们可能在glibc中,但不在msvcrt中 为什么缺少这些函数?这些函数不是“缺少”,它们只是Unix平台标准的一部分。如果你四处搜索,你可能会发现Win32的等价物。有些函数是由编译器内联处理的——你在SDK DLL/libs中搜索外部符号时找不到它们。例如,longjmp和setjmp可以在VisualC++中使用。Windows已经有了自己的解决方案。我知道有用于此的光纤函数,但我希望使

我查看了Windows SDK,没有导出类似的函数。我知道有光纤功能,但我希望使用汇编实现更快的方法。他们可能在
glibc
中,但不在
msvcrt


为什么缺少这些函数?

这些函数不是“缺少”,它们只是Unix平台标准的一部分。如果你四处搜索,你可能会发现Win32的等价物。有些函数是由编译器内联处理的——你在SDK DLL/libs中搜索外部符号时找不到它们。例如,
longjmp
setjmp
可以在VisualC++中使用。Windows已经有了自己的解决方案。
我知道有用于此的光纤函数,但我希望使用汇编实现更快的方法
您认为光纤是如何实现的-绳索和滑轮?另外,为什么在Linux上使用库函数的方法不一样?@ TonyD在C++程序中非常小心使用<代码> SETJMP < /C>和“18.10/4函数签名
longjmp(jmp_buf jbuf,int val)
在本国际标准中具有更严格的行为。如果将
setjmp
longjmp
替换为
catch
throw
将调用任何自动对象的非平凡析构函数,则
setjmp
调用对具有未定义的行为。”