データベース ライブラリのいくつかのコードを変更しています。仕組みとしては、void ポインターを送信し、そのサイズを取得するためにクエリを呼び出し、そのクエリを使用して構造体のサイズを計算します。問題は、構造体をパラメーターとして受け取りますが、最初のフェッチの前/途中で関数が失敗することです。その後、構造をクリアする必要がありますが、サイズさえありません。構造体のサイズをパラメーターとして送信するのが最善の方法であることはわかっていますが、すでに何千ものプログラムがコンパイルされています。ライブラリは 1996 年のものなので、型が void であっても構造体のサイズを計算する方法を見つける必要があります。 .
私が持っていた1つのアイデアは、構造にない次の要素の位置を計算することでした
0x000010 0x000042
[int|char[30]|int|int][int]
0x00042-0x000010 が 32 なので、サイズは 32 です。
私がいつ構造から抜け出したかを知る方法はありますか?
関数のプロトタイプは
int getData(char* fields, void* myStruct)
構造のサイズを調べる必要があります。
コードが巨大で、残念ながらここに投稿することはできません。