Projekt o którym mowa co prawda nie jest pisany w Arduino, ale pod zwykłe AVR-y w C++ (próba przesiadki ze zwykłego C).
Na jego potrzeby pożyczyłem jednak trochę plików źródłowych z Arduino - głównie bibliotekę Arduino Ethernet, którą udało mi się pozbawić nawiązań do "jądra" Arduino.
Mam teraz jednak pewien dylemat. Chciałem sobie utworzyć typ strukturalny, w którym byłyby zapisane wszystkie dane konfiguracyjne powstającego systemu. Potem utworzyłbym trzy zmienne tego typu: w pamięci RAM, EEPROM, oraz FLASH (ok, ta ostatnia to raczej stała). Takie podejście umożliwia wygodne zarządzanie ustawieniami - z kopii umieszczonej w RAM-ie korzystamy podczas normalnej pracy, w EEPROM-ie znajduje się bieżąca konfiguracja wczytywana przy starcie, natomiast FLASH przechowuje wartości domyślne, które można w razie czego przywrócić.
W C wszystko było jasne. Tworzyłem sobie typ strukturalny, np.:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
A potem inicjowałem kolejne zmienne:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dla PROGMEM musiałem oczywiście podać wartości.
Teraz próbuję to samo zrobić pod C++, korzystając z arduinowego typu zmiennej IPAddress:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Niestety próba podania wartości w klamrach, jak powyżej skutkuje warningiem:
Kod:
extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
Ktoś może mi powiedzieć co jest tego powodem i jak prawidłowo umieścić wartości we flashu?