setjmp()应该将包括“返回地址”和“堆栈指针”的寄存器保存到“jmp_buf”中。当我用glibc编译(包括gcc和clang)并在x86_64下调试以下程序时,我无法理解“jmp_buf”中的内容以及“返回地址”和“堆栈指针”位于“jmp_buf”中。 #include <stdio.h>
#include <setjmp.h>
int main()
{
int i;
尝试在也构建为C++的C代码库上显示一些警告级别。我给了Visual Studio一个镜头(出于某种原因)。 尽管没有看到任何相关的析构函数,但仍发现有关setjmp交互的警告。所以我做了试验: #include <setjmp.h>
struct X { int y; };
int main() {
struct X x;
jmp_buf buf;
if
我试图用setjmp()和longjmp(),以使c语言像fibonacci生成序列(即使用yield关键字实现在python): #include <setjmp.h>
#include <stdio.h>
jmp_buf mainTask, childTask;
void child(void);
int main(void) {
long i = 1;
if (