Ошибка при компиляции: '...' does not name a type
- Войдите на сайт для отправки комментариев
Сб, 05/11/2016 - 01:04
#include <EEPROM.h> // чтение int EEPROM_int_read(int addr) { byte raw[2]; for(byte i = 0; i < 2; i++) raw[i] = EEPROM.read(addr+i); int &num = (int&)raw; return num; } int cycleTimer = 0; cycleTimer = EEPROM_int_read(0); void setup(){ } void loop(){ }
Уже больше часа потратил на размышление и поиск решения, почему при компиляции этого наглядного примера скетча, что выше, появляется ошибка: 'cycleTimer' does not name a type. Уже решил использовать EEPROM.get, но все таки хочу понять, почему в объявленную ранее переменную не может идти запись?
Вот в этом примере ошибок не возникает:
#include <EEPROM.h> // чтение int EEPROM_int_read(int addr) { byte raw[2]; for(byte i = 0; i < 2; i++) raw[i] = EEPROM.read(addr+i); int &num = (int&)raw; return num; } int cycleTimer = EEPROM_int_read(0); void setup(){ } void loop(){ }
Попробовал читать с EEPROM внутри функции setup() - ошибок при компиляции нет. Выходит так и задумано кем то...
Попробовал читать с EEPROM внутри функции setup() - ошибок при компиляции нет. Выходит так и задумано кем то...
Ну да. Теми кто проектировал язык Си
Или сюда
Спасибо за ответ, пока отписывался, вы уже ответили. Вопрос решен.
Разница в записях в том, что строка cycleTimer = EEPROM_int_read(0); это попытка выполнения команды вне процедуры - это ошибка, внутри setup процедуры - нет ошибки. Во втором
int
cycleTimer = EEPROM_int_read(0);
случае это объявление переменной и присвоение ей адреса подпрограммы- вполне нормальное объявление, только не надо ожидать что подпрограмма при этом будет выполнена.