Skocz do zawartości

Czy język programowania dla Arduino to C czy nie C bo zgłupiałem


Wojtek65

Pomocna odpowiedź

Witajcie

Oglądam sobie na yetubie:)) kurs programowania w C. Prowadzący stwierdził w jednym z odcinków, że w C nie ma typu danych bool. Zajrzałem do Wikipedii i znalazłem tabelkę z typami danych gdzie jak byk stoi, że od 1999 po #include <stdbool.h>  w ANSI C mamy dostępny typ danych bool. W referencjach  w IDE dla Arduino znalazłem typ boollean. Po tych wszyskich sprawdzeniach mam taki młyn w mózgu, że aż strasznie i śmiesznie jednocześnie. Może mi ktoś wyjaśnić jak to naprawdę jest z tym C dla Arduino, najlepiej prosto PROSZE

Link do komentarza
Share on other sites

Witajcie 

Jeszcze takie uzupełnienie.

Jeżeli w C główną funkcją jest MAIN, a w strukturze programu napisanego w IDE dla Arduino taka funkcja nie występuje to według mnie następuje "delikatnie mówiąc" rozdwojenie jaźni, które prowokuje do tego typu dywagacji. 

 

Link do komentarza
Share on other sites

11 godzin temu, Wojtek65 napisał:

jak to naprawdę jest z tym C dla Arduino

Naprawdę to jest tak, że nie jest to C tylko C++. Podobny, owszem, ale to nie to samo.

Jest pewna różnica: Arduino IDE dodatkowo przetwarza Twój plik "*.ino" na czysty C++, dodając pewnie niezbędne "ułatwienia". Takie najważniejsze to automatyczne dopisanie deklaracji wyprzedzających funkcji. Osobiście podchodzę z nieufnością do tych ułatwień, bo uczą złych nawyków, ale na szczęście można traktować plik .ino jak zwykły plik C++ i pisać normalnie.

 

9 godzin temu, Wojtek65 napisał:

Jeżeli w C główną funkcją jest MAIN, a w strukturze programu napisanego w IDE dla Arduino taka funkcja nie występuje

Ależ występuje! Jeśli dobrze poszukasz, to w katalogu <arduino>\hardware\arduino\avr\cores\arduino (gdzie <arduino> to katalog gdzie jest zainstalowane Arduino IDE) znajdziesz plik "main.cpp". Po prostu autorzy Wiringa (z którego wyewoluowało Arduino IDE) założyli, że funkcje setup() i loop() są bardziej naturalne i najczęściej wykorzystywane, toteż zrobili bardzo ciężką robotę i napisali funkcję main() za nas. Na szczęście możemy napisać własną funkcję main() - wtedy plik main.cpp zostanie po prostu pominięty.

To tak w skrócie.

 

Edytowano przez ethanak
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Hm... nie pamiętam skąd się to wzięło, mój błąd że nie sprawdziłem. Już wywaliłem z posta.

Przepraszam, ale jeszcze powoli z covida wychodzę i czasem mi się coś chrzani (jak w tym przypadku) 😞

Edytowano przez ethanak
  • Lubię! 2
Link do komentarza
Share on other sites

Ok, po prostu mnie to bardzo zaskoczyło 🙂

Z tego co wiem pusta lista parametrów to jeden z niewielu przykładów, gdzie występuje różnica między C, a C++ w pozornie identycznym kodzie.

W przypadku C++ oba zapisy oznaczają to samo:
 

void setup(void);
void setup();

Czyli zarówno z void, jak i bez jest to funkcja bez parametrów.

Natomiast w języku C pierwsza wersja, czyli z void też oznacza funkcję bez parametrów, ale druga już nie - to jest funkcja z nieokreśloną liczbą parametrów. Czyli jeśli gdzieś w kodzie napiszemy:

setup(5);

To kompilator C++ od razu zgłosi błąd, natomiast w C będzie to nadal poprawny składniowo program.

Ale człowiek całe życie się uczy, więc chętnie się dowiem jeśli jednak jest inaczej - to niby ciekawostki, ale czasem bywają przydatne. Albo chociaż fajnie je znać żeby nie dać się zagiąć na rozmowie o pracę.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.