Ankieta: Jaki system operacyjnym preferujesz
Ankieta jest zamknięta.
Windows 60.78% 31 60.78%
Linux 31.37% 16 31.37%
MAC/OS 7.84% 4 7.84%
Inny 0% 0 0%
Razem 51 głosów 100%
*) odpowiedź wybrana przez Ciebie [Wyniki ankiety]

Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie ARM, nauka, środowiska programistyczne IDE
SP9IT Offline
Nowicjusz
*

Liczba postów: 22
Dołączył: 10-04-2016
Post: #119
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Witajcie.

Co do makr by wniósł dwie rzeczy.
Po pierwsze, i to jest ważne, w "prawej" części czyli zawartości makra, ujmowanie w nawiasy czegokolwiek bardziej złożonego. Można sobie zrobić kuku, jak kiedyś użyje się makra w kontekście złożonym, np wyrażenia. Są różne szkoły, i święte wojny jak te nawiasy zrobić, ale lepsze (prawie) dowolne, niż żadne.
Po drugie, ja jestem z tych, co makra "akcyjne (przeciwieństwo do "wartości" zwykle stałej w wyrażeniu) markuje nawiasem jak funkcja bezargumentowa

Więc
Kod:
#define LED_RED_ON()    { LED_RED_GPIO->BSRRL = LED_RED_PIN;  }

lub żeby nie wywołać polemiki super-hackerów C, jedna z ambitnych notacji

Kod:
#define LED_RED_ON()    do { LED_RED_GPIO->BSRRL = LED_RED_PIN;  } while(0)

W ogóle jestem zwolennikiem odchodzenia od makr najbardziej jak się da, nowoczesne dialekty C (o C++ nie wspominam) mają funkcje inline, które mają wszystkie zalety makr (generowanie kodu maszynowego w miejscu, bez wywołania call, stosu itd) a nie mają wad i ryzyka.


Aha, makro bezargumentowe nie może koło tych nawiasów mieć spacji

Jacek SP9IT
(Ten post był ostatnio modyfikowany: 27-07-2016 16:32 przez SP9IT.)
27-07-2016 16:31
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Programowanie ARM, nauka, środowiska programistyczne IDE - SP9IT - 27-07-2016 16:31

Skocz do:


Użytkownicy przeglądający ten wątek: 36 gości