我创建了一个文件msgbuf.h,如下所示:
//msgbuf.h
typedef struct msgbuf1
{
long mtype;
M1 *m;
} message_buf;
typedef struct msgclient
{
int msglen;
int msgtype;
char cp[100];
}M1;
程序check.c.below prog给出的错误是没有m1。为什么会这样?我在犯什么错误?
我认为“msgbuf.h”文件的内容应该在prog check.c中复制,程序应该运行良好。请告诉我这个。
//check.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"msgbuf.h"
int main()
{
message_buf *sbuf;
sbuf=malloc(sizeof(sbuf));
sbuf->m=malloc(sizeof(M1));
sbuf->m->msglen=10;
printf("\n%d",sbuf->m->msglen);
printf("\n %d",sizeof(sbuf->m));
return 0;
}
谢谢:)
最佳答案
简单,在M1
之前声明message_buf
。
typedef struct msgclient
{
int msglen;
int msgtype;
char cp[100];
}M1;
typedef struct msgbuf1
{
long mtype;
M1 *m;
} message_buf;
阅读凯尔特人在问题下面的评论。
关于c - 文件中声明的结构内的结构无法访问内部结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22610442/