正确的示例
i2c_status_type EEPROM_Write(uint16_t mem_address, uint8_t* pdata, uint16_t size);
void WriteConfigToEEPROM(const SystemConfig *config) {
SystemConfig tempConfig = *config; // 创建临时
EEPROM_Write(PRIMARY_CONFIG_ADDRESS, ( uint8_t *)&tempConfig, sizeof(SystemConfig));
}
void vEEPROMTask(void *p)
{
// 初始化系统配置结构体
SystemConfig config;
WriteConfigToEEPROM(&config);
}
错误的示例
i2c_status_type EEPROM_Write(uint16_t mem_address, uint8_t* pdata, uint16_t size);
void WriteConfigToEEPROM(const SystemConfig *config)
{
SystemConfig tempConfig = *config; // 创建临时
EEPROM_Write(PRIMARY_CONFIG_ADDRESS, (const uint8_t *)&tempConfig, sizeof(SystemConfig));
}
void vEEPROMTask(void *p)
{
// 初始化系统配置结构体
SystemConfig config;
WriteConfigToEEPROM(&config);
}
形参 : uint8_t* pdata
实参:(const uint8_t *)&tempConfig 强制转换 编译器报错。