c - 将任何结构成员传递给函数
问题描述
我有以下结构:
typedef struct
{
uint8_t number;
uint8_t user_bank;
uint8_t temperature;
float acc_xyz[3];
float gyro_xyz[3];
float mag_xyz[3];
float acc_bias[3];
float gyro_bias[3];
float quaternions[4];
char *orientation_of_IMU;
char *component_orientation_on_pcb;
} Sensor;
我有兴趣将一些浮点成员表示为字节,因此我可以通过 SPI 传输它们。到目前为止,我有这些函数,它们允许我包装 4 个浮点四元数,并在缓冲区中返回 16 个字节。
typedef char byte;
void floatToByteArray(float f, byte buf[4])
{
memcpy(buf, &f, sizeof(f));
}
//Function that takes float quaternions from a sensor struct, and returns their values, represented as bytes for easier SPI transfer.
void wrap_quaternions(Sensor* imu, int8_t *buff)
{
for (int i = 0; i < 4; i++)
{
floatToByteArray(imu->quaternions[i], &buff[4*i]);
}
}
现在我对概括它感兴趣,所以我可以在 Sensor 结构中获取我的任何浮点数组成员,并相应地包装它们。我希望能够以 imu->float_member 为参数调用 floatToByteArray 函数,但我不能这样做。然后我可以将数字 4 更改为 sizeof(float_member)。
有解决方法吗?
解决方案
您是否尝试过将 float 参数用作指针?对于这种情况,指针非常方便。
推荐阅读
- monitoring - 在 Zabbix 中将主机名问题标记为已解决
- google-cloud-platform - 无法连接到 SSH bitnami GCP
- javascript - 如何在重叠图像时更改字体颜色?
- powershell - 从内容中重命名多个文件
- php - 如果数据库中的项目不属于当前用户,Laravel 会拒绝通过 URL 访问它吗?
- c++ - Exceptions inside methods c++
- docker - GCP:如何从 VM 实例访问云存储桶
- wordpress - WordPress 用户元数据内联显示多个子页面的内容
- reactjs - 无法弄清楚在反应应用程序中在哪里启动 CronJob
- c# - WPF 使用键盘上的箭头键移动图像