Создание списка структур в C - PullRequest
3 голосов
/ 01 ноября 2011

Я уверен, что об этом, должно быть, спрашивали раньше, но я не могу найти ответ где-нибудь.У меня есть структура, определенная в заголовочном файле следующим образом:

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;

, но это не сработало.Любая помощь будет высоко ценится.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Если это не фиксированный размер, вы можете создать связанный список:

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 для хранения списка блокировок динамического размера.

3 голосов
/ 01 ноября 2011

Если create_lock() возвращает указатель на lock, должно работать следующее:

lock *lock_list[2];

Кроме того, поскольку вы его не опубликовали, вам необходимо typedef вашstruct, если вы хотите пропустить часть struct при ее использовании:

typedef struct lock lock;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...