我有以下代码:
void setup()
{
address_t sp, pc;
sp = (address_t)stack1 + STACK_SIZE - sizeof(address_t);
pc = (address_t)f;
sigsetjmp(jbuf[0],1);
(jbuf[0]->__jmpbuf)[JB_SP] = translate_address(sp);<----ERROR
(jbuf[0]->__jmpbuf)[JB_PC] = translate_address(pc);<----ERROR
sigemptyset(&jbuf[0]->__saved_mask);<----ERROR
sp = (address_t)stack2 + STACK_SIZE - sizeof(address_t);
pc = (address_t)g;
sigsetjmp(jbuf[1],1);
(jbuf[1]->__jmpbuf)[JB_SP] = translate_address(sp);<----ERROR
(jbuf[1]->__jmpbuf)[JB_PC] = translate_address(pc);<----ERROR
sigemptyset(&jbuf[1]->__saved_mask);<----ERROR
}
知道这个错误意味着什么?
答案 0 :(得分:3)
sigjmp_buf
的类型(sigsetjmp()
作为第一个参数的类型)是不透明的 - 在这种情况下,它不是您的代码所期望的。显然,这里只是一个简单的int
,而不是指向结构的指针。
如果你想要使用sigjmp_buf
的内部,你需要研究它是如何在该特定平台上实现的(显然代码不可移植)。