#define yra preprocesorius apdorojamas kompiliatoriaus.
Tai yra savotiškas "replace".
Esmė ta, kad preprocesoriai yra apdorojami dar prieš sukompiliuojant. Sukompiliuotame plugine tiesiog su define aprašytos reikšmės yra įkeliamos į tas vienas, kur jis panaudotas.
Tarkim yra:
Code: Select all
#define AMOUNT 5set_user_health(id, AMOUNT)
Sukompiliuotas kodas atrodys taip:
const kintamasis yra konstanta. Konstanta - reikšmė, kurią galima tik skaityti, negalima jos redaguoti. const kintamasis per jo inicializaciją įgauną reikšmę ir bet koks bandymas priskirti kažkokią reikšmę tam kintamajam sukels kompiliavimo klaidą.
Skirtumas būtų tas, kad const kintamasis yra normalus kintamasis. Jam yra išskiriama 4 baitai ram atminties ir papildoma eilutė kodo segmente inicializuojanti kintamąjį ir jo reikšmę.
define - tiesiog reikšmė įrašyta funkcijoje.
Apskritai, nematau tikslo Pawn kalboje naudoti const kintamųjų. Jie naudingi nebent tik funkcijose, parametrus pažymint const, kurie neturėtų keistis pagal idėją, dėl aiškumo daugiau.
const pravartesnis yra tokiose kalbose kaip C, C++ ar Java final. Ten kartais naudinga pasidaryti const pointerius ar objekte turėti konstaninius laukus. Irgi daugiau dėl aiškumo ir saugumo.