据我所知,ucontext
提供了比setjmp
更好的功能。但它已经被弃用,现在已经从POSIX规范中删除了。那么为什么它会出现,为什么会被删除呢?
来自ucontext.h
的makecontext
的签名为:
void makecontext(ucontext_t *ucp, void (*func)(),
int argc, ...);
注意,func
使用空括号作为参数,但这是标准C:中不推荐使用的特性
C11(ISO/IEC 9899:201x)§6.11.6功能声明器
使用带空括号的函数声明符(不是原型格式参数类型声明符)是一个过时的特性。
这就是它被弃用的原因(不知何故很不幸)。