• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Używanie w makrach preprocesora średników

0 głosów
374 wizyt
pytanie zadane 25 marca 2025 w C i C++ przez whiteman808 Mądrala (5,560 p.)

Mam takie makro

#define CHECKPOINT(msg) (std::cerr << (msg) << std::endl)

Lepiej w definicjach makr dodawać średniki i wywoływać je np CHECKPOINT("test passed") czy nie robić średnika na końcu wyrażenia z std::cerr i w kodzie robić CHECKPOINT("test passed");?

komentarz 26 marca 2025 przez tkz Nałogowiec (42,040 p.)
A nie możesz użyć funkcji? Generalnie to zależy. Czasami formater potrafi się rozjechać przy braku ;
komentarz 26 marca 2025 przez Oscar Nałogowiec (29,360 p.)

@whiteman808, Najlepiej gdyby wywołanie makra pod względem składni "działało" jak instrukcja. Ta by można było używać w instrukcjach złożonych. Często w różnych inkludach makro zawiera np. do {  ... } while(false) by nie wchodziło w konflikt "składniowy" w żadnym kontekście, by było traktowane jako pojedyncza instrukcja.

komentarz 26 marca 2025 przez whiteman808 Mądrala (5,560 p.)
Czy po wywołaniu makra w kodzie używał byś średników nawet jakby definicja makra byłaby kompletną instrukcją kończąca się średnikiem?
komentarz 26 marca 2025 przez tkz Nałogowiec (42,040 p.)
Generalnie tak jak w innym wątku ktoś polecił by unikać makra(najlepiej jak ognia) - tego powinieneś się trzymać. Osobiście jeżeli już muszę skorzystać z makra(głównie loggery - inne przypadki to na palcach jednej ręki) to nie dodaje średników w samym makrze(zazwyczaj), a po porstu w kodzie. Wiąże się to po prostu z foramterem jakiego używam, a jest nim clang-format.
komentarz 26 marca 2025 przez whiteman808 Mądrala (5,560 p.)
Da się makra schować w przestrzeni nazw tak jak funkcje wplatane?
komentarz 26 marca 2025 przez tkz Nałogowiec (42,040 p.)
Nie da się. Makra są jeszcze przed kompilacją.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 311 wizyt
pytanie zadane 17 kwietnia 2015 w C i C++ przez antekskocz Początkujący (420 p.)
+1 głos
0 odpowiedzi 1,148 wizyt
0 głosów
0 odpowiedzi 293 wizyt

93,729 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,288 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...