我正在更改数据库库中的一些代码。它的工作方式我发送一个空指针,以获取它的大小我调用查询并使用查询计算结构的大小。现在的问题是我收到了作为参数的结构,但是函数在第一次获取之前/中间失败了。之后我需要清除结构,但我什至没有大小。 我知道最好的方法是将结构的大小作为参数发送,但我已经编译了成千上万的程序,库是 1996 年的,所以我需要找到一种方法来计算结构大小,即使类型是 void .
我的一个想法是计算下一个不在结构中的元素的位置
0x000010 0x000042
[int|char[30]|int|int][int]
所以大小是 32,因为 0x00042-0x000010 是 32。
有没有办法知道我什么时候离开结构。
函数的原型(prototype)是
int getData(char* fields, void* myStruct)
我需要找出结构大小。
抱歉,如果我遗漏了一些信息,代码非常庞大,不幸的是我无法在此处发布。
最佳答案
不,一般来说,给定一个 void *
是没有办法弄清楚你在找什么的。您唯一可以做的就是将它与 NULL
进行比较,当然这在这里没有帮助。
请注意,void *
中没有任何内容甚至说它指向一个 struct
,它也可能指向一个数组的中间。
如果在将指针传递给 getData()
之前,您有一些全局方法来记录指针,则您可以实现一个查找函数,该函数只需将指针值与之前的值进行比较记录,但这只是使用指针值作为键。
关于c - 将结构的大小作为 void 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016578/