#include <stdio.h>
#include <stdint.h>
typedef struct
{
void* userData;
float (*value)(void*, int);
} IA;
float get_float_from_uint16(void* userData, int index)
{
return ((uint16_t*) userData)[index];
}
int main()
{
uint16_t bytes[] = {1, 2, 3, 4, 5 };
IA a = {bytes, &get_float_from_uint16};
int index = 0;
float f = a.value(a.userData, index);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCnR5cGVkZWYgc3RydWN0CnsKICAgIHZvaWQqIHVzZXJEYXRhOwogICAgZmxvYXQgKCp2YWx1ZSkodm9pZCosIGludCk7Cn0gSUE7CgpmbG9hdCBnZXRfZmxvYXRfZnJvbV91aW50MTYodm9pZCogdXNlckRhdGEsIGludCBpbmRleCkKewogICAgcmV0dXJuICgodWludDE2X3QqKSB1c2VyRGF0YSlbaW5kZXhdOwp9CgppbnQgbWFpbigpCnsKICAgIHVpbnQxNl90IGJ5dGVzW10gPSB7MSwgMiwgMywgNCwgNSB9OyAKICAgIElBIGEgPSB7Ynl0ZXMsICZnZXRfZmxvYXRfZnJvbV91aW50MTZ9OwoKICAgIGludCBpbmRleCA9IDA7CiAgICBmbG9hdCBmID0gYS52YWx1ZShhLnVzZXJEYXRhLCBpbmRleCk7CiAgICBwcmludGYoIiVmXG4iLCBmKTsKfQoK