我创建了一个文件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/

10-11 21:20