Как сохранить массив структур внутри анонимного члена? - PullRequest
2 голосов
/ 27 февраля 2012

У меня есть набор структур, которые я хочу сохранить внутри структуры анонимного члена. Каждая маленькая структура выглядит так:

static struct {
    uint16_t buf[256];
} bufData[8];

Я точно знаю, что в нем будет только 8 элементов. Я хочу включить это в другую структуру, как таковую:

static struct {
    int size;
    // I am not sure how to proceed
    //char * bufData;
    //struct * bufData;
} Table[MAX_FILES];

Данные в настоящее время вводятся так:

  for (int i = 0; i < 8; i++) {
        loadData(i,bufData[i].buf);
        printf("%s\n", bufData[i].buf); // This works
    }

и я хотел бы сохранить это в j элементе таблицы, например, Table [j] .bufData. Сейчас я пробовал

memset(bufData, 0, sizeof(bufData));
Table[j].size = 256;
Table[j].bufData = &bufData;

, а затем распаковать его, но он не работает.

char * test = Table[j].bufData;
for (int i = 0; i < 8; i++) {
    printf("%s\n", test[i].buf);
}

Я думаю, что я ужасно изуродовал этот, и мне нужна помощь, чтобы распутать его!

1 Ответ

2 голосов
/ 27 февраля 2012

Поскольку bufData является структурой, вы должны хранить ее как указатель bufData (не указатель char) или просто как массив с параметром bufData:

struct BufData /* this declares a type, not a variable */
{
    uint16_t buf[256];
};

1:

static struct 
{
    int size;
    struct BufData* myBufData;
} Table[MAX_FILES];

опция 2:

static struct 
{
    int size;
    struct BufData myBufData[8];
} Table[MAX_FILES];

edit: при объявлении структуры не путайте объявление типа:

struct aStruct
{
...
};

с объявлением aпеременная с неназванным типом структуры:

struct 
{
...
} aVariable;

с объявлением типа и переменной этого типа:

struct aStruct
{
...
} aVariable;
...