当前位置: 技术问答>linux和unix
【error: dereferencing pointer to incomplete type】学unix网络编程,有疑问~~
来源: 互联网 发布时间:2017-03-12
本文导语: #include #include #include #include #include #include #include #include #include #define SVMSG_MODE 420 void err_quit(const char *s) { ...
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SVMSG_MODE 420
void
err_quit(const char *s)
{
printf("%sn", s);
exit(1);
}
int
main(int argc, char **argv)
{
int mqid;
size_t len;
long type;
struct msgbuf *ptr;
if (argc != 4)
err_quit("usage: msgsnd ");
len = atoi(argv[2]);
type = atoi(argv[3]);
mqid = msgget(ftok(argv[1], 0), 288);
ptr = calloc(sizeof(long) + len, sizeof(char));
ptr->mtype = type;
msgsnd(mqid, ptr, len, 0);
exit(0);
}
编译后显示:
[red@localhost svmsg]$ gcc -o msgsnd msgsnd_cp.c
msgsnd_cp.c: In function ‘main’:
msgsnd_cp.c:19: error: dereferencing pointer to incomplete type
第19行为:ptr->mtype = type
在网上搜索,似乎是联合体/结构体指针的问题,不值如何解决~~
求指点,谢谢~~
|
StackOverflow是一个好网站,可以参考这篇。
不知楼主用的是不是Cygwin,我在Cygwin上也无法编译通过,从提示看,就是找不到msgbuf结构体的定义,所以,在合适位置加入如下定义即可:
struct msgbuf{
long mtype;
char mtext[1];
};
不知楼主用的是不是Cygwin,我在Cygwin上也无法编译通过,从提示看,就是找不到msgbuf结构体的定义,所以,在合适位置加入如下定义即可:
struct msgbuf{
long mtype;
char mtext[1];
};