4

私は次のコードを持っています:

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

}

このエラーの意味について何か考えはありますか?

4

1 に答える 1

3

aのタイプsigjmp_bufsigsetjmp()最初のパラメーターとして使用されるもの)は不透明です—この場合、コードが期待しているものではありません。どうやら、これは単純intであり、構造体へのポインタではありません。

の内部をいじくり回したい場合は、sigjmp_bufその特定のプラットフォームでどのように実装されているかを調べる必要があります(そして明らかにコードは移植性がありません)。

于 2012-04-26T15:23:48.450 に答える