0

我有一些我继承的旧代码正在维护并希望尽可能少地更改。它不能用较新的编译器编译。

代码还有更多内容,但我认为基本上这个想法(不管有多糟糕)是将 void* 传递给任意记录大小的记录表的开头。我不想在此功能之外进行更改,因为它变得丑陋。我想我只想转换为 unsigned char* 并进行加法,然后再转换回 void* 但我无法确定正确的转换等。

有什么建议么?

这是原始代码:

foo(const void* recordArrayBasePtr ,ubin32 sizeOfStruct)
{
   void * recordPtr;
   int row = 9; //for example
   recordPtr = const_cast<void *>( recordArrayBasePtr ) + sizeOfStruct * row;
}
4

1 回答 1

0

您想转换为char*,这是用reinterpret_cast而不是用完成的const_cast。但考虑到这确实是 C 代码,您也可以使用 C 风格的强制转换,这样编写起来会更轻松:

 recordPtr = (void*)((char*)recordArrayBasePtr + sizeofStruct * row);
于 2013-09-24T20:00:32.253 回答