本帖最后由 xyzjacky 于 2017-3-25 14:29 编辑
我想请教一下:
在rt thread os中,在工程的一个C文件创建了一个消息队列,然后发送这个消息队列,
那么是只能在这个C文件中进行消息队列的接收,还是可以在工程的任何C文件中进行消息队列的接收?
static struct rt_messagequeue P2208_mq;
if (rt_mq_recv(&P2208_mq, &txbuf[0], sizeof(txbuf), RT_WAITING_FOREVER)== RT_EOK)
我现在遇到的一个问题是,按照例程在一个C文件中创建了一个消息队列,在本C文件中接收消息队列没有问题。说明代码没有问题。但是如果把接收消息队列的函数,移到工程的另一个C文件中,编译时就要报错,提示内容为: P2208_mq 没有定义。当我把static struct rt_messagequeue P2208_mq; 改成:extern struct rt_messagequeue P2208_mq; 就不会再报错。
这我就奇怪了,如果P2208_mq要定义成一个全局的变量,那么消息队列还有何用?
我问了别人ucos的消息队列,别人说ucos的消息队列可以在工程中任何地方接收。