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); <--- ??????
}
}
我在&#34; getcontext&#34;中收到错误串。如何编写对数组中任何元素的引用?我如何用&#34; getcontext&#34;初始化?命令&#34; uc&#34;每个数组元素的字段?
答案 0 :(得分:0)
您与ut_slot
的定义及其使用不一致:
typedef struct _ut_slot {
ucontext_t uc;
....
}*ut_slot; //<--- pointer to struct
你说ut_slot
是指向结构的指针,然后你声明
static ut_slot * table;
所以你有一个指向结构的指针。
您可能希望ut_slot
只是一个结构,或table
是指向结构的指针。
更确切地说:table
是指向结构的指针,因此table[i]
是指向结构的指针,并且您尝试访问非结构的成员-struct with table[i].ut
,这会引发编译错误。
尝试以下方法:
typedef struct _ut_slot {
ucontext_t uc;
....
} ut_slot; //removed "*"
static ut_slot *table;
其余代码没问题,无需更改。
答案 1 :(得分:0)
getcontext手册提出了这样的原型:
int getcontext(ucontext_t *ucp);
你确定你传递了正确的论据吗? ;)
如果你真的想要一个结构数组,你必须为每个结构留出一些内存。 请注意 - &gt;取消引用指针和&amp;获取成员结构的地址。这令人困惑,并且向后看。
抱歉,我的程序没有大括号和标点符号。 Anchor 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