c - 我可以使用箭头运算符 (->) 访问我的联合吗?
问题描述
我想知道我是否可以在我的联合中使用箭头运算符并且我无权访问我的构建环境。
假设我有以下工会
union max30205_raw_data {
struct {
uint8_t lsb;
uint8_t msb;
};
struct {
uint16_t magnitude_bits:15;
uint16_t sign_bit:1;
};
uint16_t uwrd;
int16_t swrd;
};
我会按照以下方式填写工会的内容,但我想知道工会成员的访问是否msb
正确lsb
?
int32_t max30205_read_reg16_WithDefUnion(char reg, max30205_raw_data *p_unionRawData) {
char aux[] = {0,0}
int32_t error;
if (reg == MAX30205_REG_TEMPERATURE || reg == MAX30205_REG_THYST_LOW_TRIP || reg == MAX30205_REG_TOS_HIGH_TRIP) {
error = twi_max30205_read(&myMax30205Instance,max30205Address,reg,&aux,sizeof(aux));
if(error == 0){
p_unionRawData->msb = aux[0];//IS THIS RIGHT IN C?
p_unionRawData->lsb = aux[1];//IS THIS RIGHT IN C?
}
}
return error;
}
我会打电话max30205_read_reg16_WithDefUnion()
给
int16_t max30205MeasureTemperatureWithDefUnion(void) {
char regT = MAX30205_REG_TEMPERATURE;
max30205_raw_data rawTemp;
rawTemp.msb = 0;
rawTemp.lsb = 0;
rawTemp.swrd = 0;
int16_t temperatureValue = 0;
if (max30205_read_reg16_WithDefUnion(regT,&rawTemp) ==0)
temperatureValue = rawTemp.swrd;
return temperatureValue;
}
解决方案
是的。->
适用于指向结构的指针和指向联合的指针。
推荐阅读
- python - 如何使用 ffmpeg 在 python 中检查视频损坏?
- sql - 无法使用名为 Ataccama 的数据治理工具调用雪花程序
- ssas - MDX:排除共享度量的相同维度属性的成员
- angular - FormsModule:添加到对象,仅当值存在时
- vba - Access vba 运行缓慢
- java - 如何从 Java 中的另一个 aws lambda 调用 aws lambda 函数?
- sql - 从动态 sql 字符串变量中选择 INTO Temp 表
- javascript - 如何同时过滤和映射数组?
- r - 您可以按行和列排列 Flexdashboard 吗?
- excel - 我需要在 Excel 中计算项目的进度百分比