C: массив структуры (который содержит int и другой массив другой структуры) - PullRequest
0 голосов
/ 10 июня 2011
struct dataStruct {     const char* s;     int num; }; 

struct Final_struct {     int n;     dataStruct a[]; }; 

Теперь проблема возникает, когда я пытаюсь инициализировать Final_struct следующим образом:

const Final_struct Example[]= {
                                {100, { {"age", 20}, {"iq", 120}, {"bmi",26} } },
                                {100, { {"age", 36}, {"iq", 145}, {"bmi",22} }}
};

Это код переменного тока, и когда я пытаюсь его скомпилировать, выдается ошибка компилятора:

Fields of the object can not have arrrays of size 0

Есть предложения?

спасибо.

Ответы [ 6 ]

5 голосов
/ 10 июня 2011

dataStruct a[] определяет член структуры как массив размером 0. Это практически бесполезно. Вы должны указать его размер в определении struct, потому что компилятору нужно заранее знать размер всего struct.

Или вы можете просто объявить поле как dataStruct *a и тогда сам массив не будет содержаться в struct.

1 голос
/ 10 июня 2011

Если это C, что такое string? Почему вы ожидаете, что сможете инициализировать его из того, что выглядит как другие переменные?

Попробуйте const char * для s и выполните инициализацию из указанных строковых литералов.

0 голосов
/ 10 июня 2011

массив 'a', который объявлен внутри структуры с именем Final_struct, должен иметь размер.не зная размера этой переменной, компилятор не может назначить память для этой переменной.поэтому вы должны сначала выделить размер ...

0 голосов
/ 10 июня 2011

Есть предложения?

Попытка:

/* note the explicit array size for a[] */
struct Final_struct {     int n;     struct dataStruct a[3]; };
0 голосов
/ 10 июня 2011

Вы пробовали помещать двойные кавычки вокруг своих строковых констант?

0 голосов
/ 10 июня 2011

ты забыл кавычки в своих строках?

"возраст"

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