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