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

makra, programowanie w C

VPS Starter Arubacloud
0 głosów
513 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ź 582 wizyt
pytanie zadane 14 maja 2020 w C i C++ przez Altair Nowicjusz (140 p.)
+1 głos
1 odpowiedź 545 wizyt
pytanie zadane 14 czerwca 2018 w C i C++ przez Mithriandil Początkujący (250 p.)
0 głosów
2 odpowiedzi 151 wizyt
pytanie zadane 24 maja 2017 w C i C++ przez Adam Olesiak Gaduła (3,290 p.)

92,452 zapytań

141,262 odpowiedzi

319,081 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...