我对轻量级消息队列的使用感到困惑,有 MQX 经验的人应该很容易解决这个问题。我可以在 MQX 中包含的示例代码中看到数组声明为:
#define NUM_MESSAGES 3
#define MSG_SIZE 1
uint32_t server_queue[sizeof(LWMSGQ_STRUCT)/sizeof(uint32_t) + NUM_MESSAGES * MSG_SIZE];
那就是被初始化为:
_lwmsgq_init((void *)server_queue, NUM_MESSAGES, MSG_SIZE);
所以,我的问题很简单,如果我有以下结构,我应该如何声明我的队列数组并初始化队列:
typedef struct my_struct
{
uint32_t a;
uint8_t b;
char *c[32]
uint32_t *d;
} my_struct_t;
我问是因为这个例子使用了uint32_t这不是很有帮助。它使用 uint32_t 的事实导致混淆更改什么以使示例适应我的需要。例如,我应该将我的数组声明为:
my_struct_t server_queue[sizeof(LWMSGQ_STRUCT)/sizeof(my_struct_t) + NUM_MESSAGES * MSG_SIZE];
那么初始化呢?似乎没有什么可以改变的,因为它不包括数据类型。无论用于队列的数据类型如何,它真的是完全相同的初始化吗?这听起来不对。