我确信之前一定要问过,但我似乎无法在任何地方找到答案。我在头文件中定义了一个结构,如下所示:
struct lock {
char *name;
// add what you need here
void *holder;
// (don't forget to mark things volatile as needed)
};
我想制作一个锁定对象列表。这样我可以这样说:
lock_list[0] = create_lock();
lock_list[1] = create_lock();
我尝试了不同的方法,但他们都给我错误。我以为我可以简单地说:
lock[2] lock_list;
但它不起作用。任何帮助将不胜感激。
答案 0 :(得分:3)
如果create_lock()
返回指向lock
的指针,则以下内容应该有效:
lock *lock_list[2];
此外,由于您没有发布,如果您希望在使用时省略typedef
部分,则需要struct
struct
:
typedef struct lock lock;
答案 1 :(得分:3)
如果它不是固定大小,您可以生成链接列表:
typedef struct lock_t lock;
typedef struct lockList_t lockList;
struct lock_t {
char *name;
void *holder;
}
struct lockList_t {
lock lock_entry;
lockList *lock_next;
}
然后,您可以使用lockList实例来存储动态大小的锁定列表。