Ankieta: Jaki system operacyjnym preferujesz
Nie posiadasz uprawnień, aby oddać głos w tej ankiecie.
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]

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
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
Odpowiedz


Wiadomości w tym wątku

Skocz do:


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