当前位置: 技术问答>linux和unix
unix 下 函数msgctl的用法。请教。。急啊!!!
来源: 互联网 发布时间:2015-08-27
本文导语: 我已经定义了一个msgid_ds结构类型的指针buf如下: struct msgid_ds *buf; 然后使用函数msgctl用到这个变量: msgctl(msgid,IPC_STAT,buf); 但是编译的时候,有一个warning .. warning: argument is incompatible with prototype: arg #3 请问这...
我已经定义了一个msgid_ds结构类型的指针buf如下:
struct msgid_ds *buf;
然后使用函数msgctl用到这个变量:
msgctl(msgid,IPC_STAT,buf);
但是编译的时候,有一个warning ..
warning: argument is incompatible with prototype: arg #3
请问这是什么原因啊!
还有我想请问一下结构msgid_ds是不是已经在头文件三个的其中一个里面已经定义过了?因为我在程序中如果加入:
struct msqid_ds
{
struct ipc_perm msg_perm; /*操作权限结构 */
struct msg msg_first; /*指向消息队列的第一个结构*/
struct msg msg_last; /*指向消息队列的最后一个结构*/
short msg_cbytes; /*队列中当前字节数*/
ushort msg_qnum; /*队列中消息数*/
ushort msg_qbytes; /*队列可容纳的最大字节数*/
ushort msg_lspid; /*最后发送消息的进程号*/
ushort msg_lrpid; /*最后接收消息的进程号*/
ushort msg_stime; /*最后发送时间*/
ushort msg_rtime; /*最后接收时间*/
time_t msg_ctime; /*消息队列最后修改时间*/
};
编译的时候报error: (struct) tag redeclared: msqid_ds
struct msgid_ds *buf;
然后使用函数msgctl用到这个变量:
msgctl(msgid,IPC_STAT,buf);
但是编译的时候,有一个warning ..
warning: argument is incompatible with prototype: arg #3
请问这是什么原因啊!
还有我想请问一下结构msgid_ds是不是已经在头文件三个的其中一个里面已经定义过了?因为我在程序中如果加入:
struct msqid_ds
{
struct ipc_perm msg_perm; /*操作权限结构 */
struct msg msg_first; /*指向消息队列的第一个结构*/
struct msg msg_last; /*指向消息队列的最后一个结构*/
short msg_cbytes; /*队列中当前字节数*/
ushort msg_qnum; /*队列中消息数*/
ushort msg_qbytes; /*队列可容纳的最大字节数*/
ushort msg_lspid; /*最后发送消息的进程号*/
ushort msg_lrpid; /*最后接收消息的进程号*/
ushort msg_stime; /*最后发送时间*/
ushort msg_rtime; /*最后接收时间*/
time_t msg_ctime; /*消息队列最后修改时间*/
};
编译的时候报error: (struct) tag redeclared: msqid_ds
|
msqid_ds已经定义了,你把msgid_ds换成msqid_ds应该就行了。
|
系统已经定义,自己不用定义
struct msqid_ds buf;
msgctl(msgid, IPC_STAT, &buf)
struct msqid_ds buf;
msgctl(msgid, IPC_STAT, &buf)