我有一个嵌套结构问题的地址,我现在已经能够解决一段时间了。
所以我有一个ModuleStruct,它包含一个sensorStruct。 将地址传递给main中的ModuleStruct没问题。但是,当我确实想要将地址传递给内部结构时,传感器#34;所以readVoltage函数可以存储值,它失败了。 谷歌搜索和检查StackOverflow没有找到任何有效的东西。我希望我做了一些愚蠢的事情,这样很容易实现。
如果有人能指出我正确的方向(* puufh;)),那将非常高兴。
typedef struct
{
int32_t Voltage;
int32_t Current;
}SensorStruct;
typedef struct
{
SensorStruct SensorData;
}ModuleStruct;
int main(void)
{
ModuleStruct Module_Data;
Sensor_Collect(&Module_Data);
}
void Sensor_Collect(ModuleStruct *Module_Data)
{
/// Here is the problem, I do not know how to pass the address of the SensorStruct
ReadVoltage(Module_Data->SensorData);
}
void ReadVoltage(SensorStruct *Sensor_Data)
{
Sensor_Data->Voltage = 5;
Sensor_Data->Current = 3;
}
答案 0 :(得分:3)
有效的代码。请注意,Sensor_Collect
函数在 ReadVoltage
函数之后定义为,因此它在调用它时会知道它的类型。始终在打开所有警告的情况下编译代码。
#include <stdio.h>
#include <stdint.h>
typedef struct {
int32_t Voltage;
int32_t Current;
} SensorStruct;
typedef struct {
SensorStruct SensorData;
} ModuleStruct;
void ReadVoltage(SensorStruct *Sensor_Data) {
Sensor_Data->Voltage = 5;
Sensor_Data->Current = 3;
}
void Sensor_Collect(ModuleStruct *Module_Data) {
ReadVoltage(&(Module_Data->SensorData));
}
int main(void) {
ModuleStruct Module_Data;
Sensor_Collect(&Module_Data);
printf("voltage: %d\n", Module_Data.SensorData.Voltage);
printf("current: %d\n", Module_Data.SensorData.Current);
return 0;
}