Skonfrontuję dzisiaj dwa rodzaje tworzenia stałych w języku C. Warto wiedzieć, że w tym języku (jak również w C++) można tworzyć stałe korzystając ze sformułowania "#define" lub "const". Jedno dotyczy preprocesora, a drugie kompilatora. Różnic jest o wiele więcej...
Tweet |
STAŁE W JĘZYKU C MOŻNA TWORZYĆ NA DWA SPOSOBY
Dzisiaj dominują tylko języki wysokiego poziomu. Nie ma znaczenia czy piszemy gry (obecny :D!), aplikacje czy nawet systemy wbudowane. Gdzie okiem sięgnąć, wszystkim "trzęsie" język wysokiego poziomu. Ponieważ język C ma już swoje lata (istnieje gdzieś tak od 1972 roku) nie był tworzony na taki wzór, jaki widzimy w wielu innych językach. Stałe w danym języku pisze się tak, a tutaj pisze się jeszcze inaczej. Języki C i C++ są językami bardzo specyficznymi, gdyż stanowią trzon języków wysokiego poziomu i samego programowania wysokopoziomowego. W końcu zapewniają niskopoziomowy dostęp do wszystkich funkcji systemu, tak jak asembler (jednak będąc dalej językami wysokopoziomowymi).
Język C oraz C++ oprócz procesu kompilacji przechodzi jeszcze przez etap preprocesora. Jest to program, który wyszukuje wbudowanych dyrektyw takich jak "#include" czy tytułowy "#define" zamieniając "#define" na stałe wartości, a "#include" na zawartość dołączanego pliku nagłówkowego (oto cała magia!). Nie tylko do tego ograniczają się dyrektywy preprocesora, ale to nie jest istotne w tym temacie. Ważne jest aby wiedzieć, że definiując stałe w języku C musimy pamiętać o tym, że określanie ich jako "#define" albo "const" ma znaczenie dla procesu "sklejania" programu.
RÓŻNICE POMIĘDZY DYREKTYWĄ "#DEFINE", A SŁOWEM KLUCZOWYM "CONST"
Po lewej stronie tabeli umieściłem najważniejsze czynniki dotyczące stałej jako "#define", a po prawej, stałej jako "const":
#DEFINE | CONST |
to jest makrodefinicja | to jest słowo kluczowe |
nie jest sprawdzany typ | jest sprawdzany typ |
przetwarzanie przez preprocesor | przetwarzanie przez kompilator |
można również definiować makra (funkcje z "#define") | można definiować tylko stałe wartości |
posiada tylko zasięg globalny | ma zasięg globalny lub lokalny w zależności od miejsca deklaracji |
przy pomocy "#undef" można usunąć stałą | nie można samemu usunąć stałej |
Od tej pory miejcie na uwadze, że tworzone stałe w języku C (oraz C++) mają dużo więcej różnic niż można było przypuszczać.
Tym razem nieco krótszy artykuł mający na celu podkreślenie samych najważniejszych informacji na temat tego, jak tworzyć stałe w języku C. Jeśli interesujecie się językiem w szerszym tego słowa znaczeniu, zamieściłem poniżej sekcję "Podobne artykuły", tak jak to robią "elity" SEO. Ponieważ nie znalazłem żadnego sensownego ulokowania któregokolwiek z linków do moich poprzednich artykułów postanowiłem, że wstawię na końcu taki zbiór tytułów, abyście mogli sobie wybrać któryś z artykułów o podobnej tematyce. Możliwe, że teraz w taki sposób będę zamieszczał odnośniki do innych wpisów na stronie.