Tworzę bibliotekę dla konkretnej planszy dla Arduino IDE. Biblioteka działa świetnie i teraz robię krok do tyłu, aby dodać OO. Biblioteka jest mieszanką plików .c i .cpp. Wiem, że aby dodać klasy, potrzebuję tylko użyć .cpp.Arduino IDE nie rozpoznaje, że plik .c to .cpp
To jest plik LED.h.
https://gist.github.com/SaraJo/182220fda82cbe30255fe95f59d4a6b4
Oto plik LED.cpp.
https://gist.github.com/SaraJo/1b3d6967d7bc2ef2e70d79025b755eb9
Błąd pojawia się:
In file included from /Users/sarachipps/Library/Arduino15/packages/Jewelbots/hardware/nRF51822/1.0.0/cores/JWB_nRF51822/Arduino.h:54:0,
from /Users/sarachipps/Library/Arduino15/packages/Jewelbots/hardware/nRF51822/1.0.0/cores/JWB_nRF51822/ble-nrf51822-master/source/main.c:49:
/Users/sarachipps/Library/Arduino15/packages/Jewelbots/hardware/nRF51822/1.0.0/cores/JWB_nRF51822/LED.h:12:1: error: unknown type name 'class'
class LED {
^
/Users/sarachipps/Library/Arduino15/packages/Jewelbots/hardware/nRF51822/1.0.0/cores/JWB_nRF51822/LED.h:12:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
class LED {
^
exit status 1
Error compiling for board JWB nRF51822(V1.0 32KB).
Zgaduję, że Arduino widzi plik .cpp jak .c, czy istnieje flag kompilatora muszę ustawić? Dziękuję Ci.
To zadziałało, dziękuję. –
Będziesz musiał wykonać "extern" C "" zarówno na deklaracji (aka prototyp), jak i definicji (jeśli jest to konieczne, tzn. Jeśli twój 'main.cpp' deklaruje cokolwiek, co ktoś inny nazywa (co zwykle nie powinno) Sama funkcja main() nie powinna jej potrzebować, kompilator C++ wie o tym pośrednio. – uliwitness