Димон Безпарольный 2 20 августа, 2017 Опубликовано 20 августа, 2017 · Жалоба Делаю пока в компиляторе C-Free. Удобный и компактрый для таких дел. Ругается на строку float &num = (float&)raw; [Error] D:\8051\CFree\sprintf.c:9: error: syntax error before '&' token Вот код: unsigned char EEPROM[5]; // чтение float EEPROM_float_read(int addr) { unsigned char raw[4]; unsigned char i; float num; for(i = 0; i < 4; i++) {raw[i] = EEPROM[i];} float &num = (float&)raw; return num; } // запись void EEPROM_float_write(int addr, float num) { unsigned char raw[4]; unsigned char i; (float&)raw = num; for(i = 0; i < 4; i++) EEPROM[i] = raw[i]; } int main (void) { EEPROM_float_write(0, 1.2568); float a = EEPROM_float_read(0); printf("%f", a); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 20 августа, 2017 Опубликовано 20 августа, 2017 · Жалоба в С нет ссылок В вашем случае верните так: return *( (float *) raw); Присвоение забыли разыменовать и не тот знак воткнули *( (float *) raw) = num; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 20 августа, 2017 Опубликовано 20 августа, 2017 (изменено) · Жалоба Ругается на *((float&)raw) = num;. [Error] D:\8051\CFree\sprintf.c:16: error: syntax error before '&' token Изменено 20 августа, 2017 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 20 августа, 2017 Опубликовано 20 августа, 2017 · Жалоба Ругается на *((float&)raw) = num;. Найдите десять отличий: *( (float *) raw) = num; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 20 августа, 2017 Опубликовано 20 августа, 2017 · Жалоба Зы. Да, отличия есть. Но вроде от сюда копировал... Да, работает. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться