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

makra, programowanie w C

Object Storage Arubacloud
0 głosów
531 wizyt
pytanie zadane 23 listopada 2019 w C i C++ przez Ola Piątek Nowicjusz (240 p.)
#define MAX1 10
#define MAX2 15
#define MAX3 MAX1 - MAX2

 

int b = MAX1 - MAX3;

 

Dlaczego b wynosi  -15 skoro 10-(10-15)=15??

2 odpowiedzi

+2 głosów
odpowiedź 23 listopada 2019 przez tkz Nałogowiec (42,000 p.)
komentarz 24 listopada 2019 przez tkz Nałogowiec (42,000 p.)
Nie wiem poco jest ta wymiana zdań. Nie wiem również poco używane są argumenty ad hominem. Nie lepiej było by uzyskać rację powołując się na dokumentację lub kod potwierdzający postawioną tezę?
komentarz 24 listopada 2019 przez mmarszik Mądrala (7,390 p.)
Było by lepiej, a nawet wiele leiej, już pisałem, że byśmy mogli się obaj od siebie wiele nauczyć. Ale jak ktoś mi każe się uczyć klas, to ja mu każe się uczyć pisania funkcji.
komentarz 24 listopada 2019 przez mokrowski Mędrzec (155,460 p.)

Jedno wystarczy...

http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines i wyszukać wystąpienie słowa macro.

komentarz 24 listopada 2019 przez mmarszik Mądrala (7,390 p.)

Gdzie na tamtej stronie są przykłady o jakich ja pisałęm czyli przykłady użycia makr z głową? Bo chyba nie ten?

// webcolors.h (third party header)
#define RED   0xFF0000
#define GREEN 0x00FF00
#define BLUE  0x0000FF

// productinfo.h
// The following define product subtypes based on color
#define RED    0
#define PURPLE 1
#define BLUE   2

 

Poza tym kompilatory rzucają warningi że makro zostało przedefiniowane.

 

 

 

komentarz 24 listopada 2019 przez mmarszik Mądrala (7,390 p.)

Jak ktoś sobie zdefiniuje w pliku cpp przykładowe makro:

#define PI 3.14

To nie widzę jakiś szczególnych zagrożeń. Pchanie czegoś takiego do plików nagłówkowych w dużym programie który korzysta z dużej ilości nagłówków (w tym z zewnętrznych bibliotek) - owszem niesie z sobą zagrozenia. Ale kompilator krzyknie że makra są nadpisywana, tego typu błędy są w miarę łatwe do wykrycia.

 

+1 głos
odpowiedź 23 listopada 2019 przez Dorion300 Szeryf (90,250 p.)
edycja 24 listopada 2019 przez Dorion300
Nie podany został żaden nawias, a więc ostatecznie po operacji preprocesora masz takie coś:

int b = 10 - 10 - 15.

Można powiedzieć że Preprocesor tak jakby wkleja dosłownie zdefiniowaną wartość do kodu.
komentarz 23 listopada 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Nie dla każdego musi być to od razu oczywiste.
komentarz 23 listopada 2019 przez Dorion300 Szeryf (90,250 p.)
@Eryk  Jeśli moim wpisem kogoś uraziłem to przepraszam, nie taki był cel.

Przeczytałem dokładniej i poprawiłem aby brzmiało to bardziej przyjaźniej.
komentarz 23 listopada 2019 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie sądzę, żebyś kogoś uraził, tylko zaznaczyłem że nie dla każdego musi być oczywisty taki niuans działania preprocesora w C wink

Podobne pytania

0 głosów
1 odpowiedź 611 wizyt
pytanie zadane 14 maja 2020 w C i C++ przez Altair Nowicjusz (140 p.)
+1 głos
1 odpowiedź 548 wizyt
pytanie zadane 14 czerwca 2018 w C i C++ przez Mithriandil Początkujący (250 p.)
0 głosów
2 odpowiedzi 152 wizyt
pytanie zadane 24 maja 2017 w C i C++ przez Adam Olesiak Gaduła (3,290 p.)

92,538 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,923 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...