c语言 - 消息队列不会读取枚举类型的消息



我正在尝试使用消息队列在父亲和儿子过程之间发送和接收消息,我使用枚举为MSGRCV设置消息类型,但似乎忽略了该信息:

enum children {
  e_father_child1 = 1,
  e_father_child2 = 2,
  e_child1_father = 10,
  e_child2_father = 20
}; 

命令是:

queue_indc = msgrcv (msgid, &msg, sizeof (msg.m_data), e_child1_father, 0);

如果我将参数从枚举类型更改为int,它可以正常工作,但是我想知道为什么它不起作用,并且有其他方法可以使其正常工作。

预先感谢!

似乎MSGTYP被视为长期以来仅是常规INT。和枚举被视为普通ints。

ssize_t msgrcv(int msqid,void *msgp,size_t msgsz, long msgtyp, int msgflg);

所以我认为编译器正在遇到麻烦,将"枚举"转换为长时间,在这种情况下,可以更轻松地将" int"转换为长时间。如果您尝试将MSGTYP施加到很长的时间里怎么办?当我编译了您提供的上述代码时,它起作用而无需任何演员。

,例如

queue_indc = msgrcv (msgid, &msg, sizeof (msg.m_data), (long) e_child1_father, 0);

这是一篇可能有助于解释枚举类型的文章:

http://www.embedded.com/electronics-blogs/programmming-pointers/4026892/enumerations-enumerations-are-integers-integers-except-except-except-when-when-when-they-ney-not

最新更新