我正在尝试对 MISRA 进行一些代码投诉,并且我有以下代码:
static void DBusCallback(GObject *object, GAsyncResult *res, gpointer user_data) {
std::string * const tmp = reinterpret_cast<std::string*>(user_data);
...
其中 DBusCallback 是 call_DBus 的回调:
(void)call_DBus(proxy, NULL, &DBusCallback, reinterpret_cast<void*>(new std::string(user_data)));
//最后一个婴儿车是回调中的user_data
它编译并运行正常,但在从 gpointer 进行字符串转换时出现以下 MISRA 警告:MISRA.CAST.PTR.UNRELATED:指针类型“gpointer”的对象转换为不相关类型“string*”
规则是: MISRA-C++ 规则 5-2-7(必需):具有指针类型的对象不应直接或间接转换为不相关的指针类型。[未指定 5.2.10(7)] 基本原理 从指针转换为不相关类型的结果未指定。
有什么想法可以避免这个警告吗?