Я хочу, чтобы моя структура была рекурсивной. Так что я сделал до сих пор выглядит следующим образом:Определение рекурсивной структуры в C, ошибка «форвардная декларация»
typedef struct {
char *string;
struct my_struct **children; //I want a list of children, therefore pointer to pointer
int child_num;
} my_struct;
Но когда я затем попытаться инициализировать его следующим образом:
my_struct *alig;
alig = malloc(sizeof(my_struct)*1);
alig->child_num = 5;
alig->string = malloc(sizeof(char)*9);
strncpy(alig->string, "AAACGTCA", 8);
alig->children = malloc(sizeof(my_struct*)*alig->child_num);
int j;
for (j = 0; j < alig->child_num; j++) {
alig->children[j] = malloc(sizeof(my_struct)*1);
alig->children[j]->string = malloc(sizeof(char)*9); // *********error ********
}
Я получаю ошибку: »./structurs.h:27: 13: примечание: вперед декларация "структура my_struct"
так же как это ошибка на отмеченной линии: main.c: 56: 22: ошибка: неполное определение типа '' STRUCT my_struct
Кто-нибудь сейчас, где моя ошибка?
(кроме typedef) использование 'strncpy()' неверно. (использование strncpy() ** всегда ** неправильно) – wildplasser