C语言 Getcontext() 适用于带有结构的数组元素


typedef struct _ut_slot {
   ucontext_t uc;
   ....
}*ut_slot;
static ut_slot*  table;  //array of the structs
void foo (int tab_size){
     table =  malloc ( tab_size *(sizeof (ut_slot))); // memory allocation for array of structs 
     for(i = 0 ; i < tab_size ; i++  ){
        getcontext(&table[i].uc); <--- ?????? 
      }
}

我在"获取上下文"字符串中收到错误。如何写入对数组任何元素的引用?如何使用"getcontext"命令初始化每个数组元素的"uc"字段?

你与ut_slot的定义和它的使用不一致:

typedef struct _ut_slot {
   ucontext_t uc;
   ....
}*ut_slot; //<--- pointer to struct

你说ut_slot是指向结构的指针,然后你声明

静态ut_slot*表;

所以你有一个指针到指针到结构。

您可能希望ut_slot只是一个结构,或者table是一个指向结构的指针。


更准确地说:table 是指向指针到结构,因此table[i]是指向结构的指针,并且您尝试使用 table[i].ut 访问非结构的结构成员,这会引起编译错误。


请尝试以下操作:

typedef struct _ut_slot {
   ucontext_t uc;
   ....
} ut_slot; //removed "*"
static ut_slot *table;

其余代码没问题,不需要更改。

getcontext的手册提出了这样的原型:

int getcontext(ucontext_t *ucp);

确定你传递的论点是正确的吗?;)

如果你真的想要一个结构数组,你必须为每个结构留出一些内存。请注意 -> 如何取消引用指针并获取成员结构的地址。它令人困惑,向后看。

抱歉,我的编程没有大括号和标点符号。锚点 C 会自动添加它们。

#include <stdio.h>
#include <stdlib.h>
#include <ucontext.h>
typedef struct _ut_slot
    ucontext_t uc
    ...
*ut_slot
static ut_slot *table
int main  void
    static ucontext_t uc
    table = malloc  1 * sizeof ut_slot
    table[0] = malloc  sizeof *ut_slot
    getcontext  &table[0]->uc
    free  table[0]
    free  table
    return 0

相关内容

  • 没有找到相关文章

最新更新