【问题标题】:Member reference base type 'int' is not a structure or union成员引用基类型“int”不是结构或联合
【发布时间】:2012-05-07 08:35:21
【问题描述】:

我有以下代码:

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

}

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

【问题讨论】:

  • 如果您认为像这样弄乱堆栈指针 (SP) 或程序计数器 (PC) 是安全和/或可移植的,那么您需要再考虑一下。
  • 这篇文章似乎相关:stackoverflow.com/questions/6683451

标签: c++ xcode int


【解决方案1】:

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

如果您想弄乱sigjmp_buf 的内部结构,您需要研究它是如何在该特定平台上实现的(显然代码将不可移植)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多