【发布时间】:2020-11-18 19:58:26
【问题描述】:
我正在使用 Xsens 开发的库,以便在我的项目中使用他们的 mti710-GNSS-INS。该库具有以下结构(在标头 xbusmessage.h xbusparser.h 内)
struct XbusParser {
struct XbusParserCallback callbacks;
struct XbusMessage currentMessage;
uint16_t payloadReceived;
uint8_t checksum;
enum XbusParserState state;
};
struct XbusParserCallback{
void* (*allocateBuffer)(size_t bufSize);
void (*deallocateBuffer)(void const* buffer);
void (*handleMessage)(struct XbusMessage const* message);
};
struct XbusMessage{
enum XsMessageId mid;
uint16_t length;
void* data;
};
在我的代码中,我有一个struct XbusParser* xSensBusParser; 作为全局变量。
每次我尝试访问“解析器结构”的任何字段时,都会收到以下错误:错误:取消引用指向不完整类型的指针。下面是一个示例代码:
bool mti710WakeUp(struct XbusParser* parser, const uint32_t timeout_ms){
mti710ReadData(parser, sizeof(struct XbusMessage));
blockingDelay(timeout_ms, TIME_MS);
return parser->currentMessage.mid == XMID_Wakeup ? true : false;
}
请注意,mti710ReadData 中有一个 UART Read 函数填充缓冲区,然后是一个解析函数,根据接收到的缓冲区更改解析器字段。
【问题讨论】:
-
请提供minimal reproducible example。创建它实际上可能会让你发现问题。
-
@Lundin 我已经在 SO 上进行了搜索,但问题仍然存在。我在我的代码中包含了两个 xbusmessage.h xbusparser.h。 “在某些 .c 中隐藏结构定义”是什么意思?
-
我让那位不知什么原因删除所有cmets的版主来回答。