我希望将我的结构声明为递归结构。所以我到现在为止所做的一切都是这样的:
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:注意:'struct my_struct‘的前向声明“
以及标记行中的错误: main.c:56:22: my_struct:类型'struct my_struct‘的定义不完整
现在有人犯了我的错误吗??
发布于 2015-05-27 11:56:06
代码中没有struct my_struct,您的struct是一个匿名typedef,您需要这样做
typedef struct my_struct {
char *string;
struct my_struct **children;
int child_num;
} my_struct;甚至
typedef struct my_struct my_struct;
struct my_struct {
char *string;
my_struct **children;
int child_num;
};发布于 2015-05-27 11:57:28
typedef struct {
char *string;
struct my_struct **children; //I want a list of children, therefore pointer to pointer
int child_num;
} my_struct;应该是
typedef struct my_struct{
char *string;
struct my_struct **children; //I want a list of children, therefore pointer to pointer
int child_num;
} my_struct;正如@iharob所说,您的代码中没有struct my_struct,编译器正在抱怨它,您首先有一个struct my_struct已经显示了,然后为您的结构设置了一个typedef。
发布于 2015-05-27 11:59:40
在你的代码中
typedef struct {
char *string;
struct my_struct **children;
int child_num;
} my_struct;不定义名为struct my_struct的struct,而是将typedef的my_struct定义为未命名结构的别名。所以您不能在代码中使用struct my_struct。任一
任一
typedef放在结构定义之前。或
struct。https://stackoverflow.com/questions/30481702
复制相似问题