已知typedef struct col { char abc; } col; typedef struct data { col* ca; } data1;在函数void _stdcall cofe(unsigned short id,void * pvoid)中,Qt中 data1 * uy=static_cast<data1>(pvoid);col * p = (col*)((char *)uy+sizeof(data1));出现警告:use of old- style cast
时间: 2024-04-16 18:26:56 浏览: 152
zhsy.rar_InitStack_pop_typedef struct st
在C++中,应该尽量避免使用旧式的转换方式,如`(type)`。为了解决这个警告问题,可以使用C++中的`reinterpret_cast`来进行类型转换。
修改后的代码如下所示:
```cpp
void _stdcall cofe(unsigned short id, void* pvoid) {
data1* uy = reinterpret_cast<data1*>(pvoid);
col* p = reinterpret_cast<col*>(reinterpret_cast<char*>(uy) + sizeof(data1));
}
```
使用`reinterpret_cast`进行类型转换时,会进行更严格的类型检查,可以避免一些潜在的问题。但是需要注意,在使用`reinterpret_cast`时,需要确保被转换的类型是合法的,并且具有相同的存储布局。
阅读全文