我有以下代码:

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

}

知道这个错误是什么意思吗?

最佳答案

sigjmp_buf的类型(即sigsetjmp()作为第一个参数使用的类型)是不透明的-在这种情况下,这不是您的代码所期望的。显然,这是一个简单的int,而不是结构的指针。

如果您想了解sigjmp_buf的内部知识,则需要研究如何在特定平台上实现它(显然,该代码将不可移植)。

10-04 15:04