Dyrektywa kompilatora

brodny
Strona w budowie
Ktoś pracuje nad tą stroną, jej zawartość może się wkrótce zmienić. Prosimy o cierpliwość!

     1 Co to jest dyrektywa kompilatora?
     2 Wstawianie dyrektyw kompilatora do kodu źródłowego
     3 Dyrektywy kompilatora
          3.1 $A
          3.2 $ALIGN
          3.3 $APPTYPE
          3.4 $ASSERTIONS
          3.5 $B
          3.6 $BOOLEVAL
          3.7 $C
          3.8 $D
          3.9 $DEBUGINFO
          3.10 $DEFINE
          3.11 $DEFINITIONINFO
          3.12 $DENYPACKAGEUNIT
          3.13 $DESCRIPTION
          3.14 $DESIGNONLY
          3.15 $E
          3.16 $ELSE
          3.17 $ELSEIF
          3.18 $ENDIF
          3.19 $EXTENDEDSYNTAX
          3.20 $EXTERNALSYM
          3.21 $G
          3.22 $H
          3.23 $HINTS
          3.24 $HPPEMIT
          3.25 $I
          3.26 $IF
          3.27 $IFDEF
          3.28 $IFEND
          3.29 $IFNDEF
          3.30 $IFOPT
          3.31 $IMAGEBASE
          3.32 $IMPLICITBUILD
          3.33 $IMPORTEDDATA
          3.34 $INCLUDE
          3.35 $IOCHECKS
          3.36 $J
          3.37 $L
          3.38 $LINK
          3.39 $LOCALSYMBOLS
          3.40 $LONGSTRINGS
          3.41 $M
          3.42 $MAXSTACKSIZE
          3.43 $MESSAGE
          3.44 $MINENUMSIZE
          3.45 $MINSTACKSIZE
          3.46 $NODEFINE
          3.47 $NOINCLUDE
          3.48 $O
          3.49 $ObjExportAll
          3.50 $OPENSTRINGS
          3.51 $OPTIMIZATION
          3.52 $OVERFLOWCHECKS
          3.53 $P
          3.54 $SetPEFlags
          3.55 $SetPEOptFlags
          3.56 $Q
          3.57 $R
          3.58 $RANGECHECKS
          3.59 $REALCOMPATIBILITY
          3.60 $REFERENCEINFO
          3.61 $RESOURCE
          3.62 $RUNONLY
          3.63 $SAFEDIVIDE
          3.64 $STACKFRAMES
          3.65 $T
          3.66 $TYPEDADDRESS
          3.67 $TYPEINFO
          3.68 $U
          3.69 $UNDEF
          3.70 $V
          3.71 $VARSTRINGCHECKS
          3.72 $W
          3.73 $WARN
          3.74 $WARNINGS
          3.75 $WEAKPACKAGEUNIT
          3.76 $WRITEABLECONST
          3.77 $X
          3.78 $Y
          3.79 $Z

Co to jest dyrektywa kompilatora?

Dyrektywy kompilatora to specjalny rodzaj komentarzy, które kontrolują kompilator i jego zachowanie. Są one podobne do dyrektyw preprocesora w języku C/C++.

Wstawianie dyrektyw kompilatora do kodu źródłowego

Komentarz zawierający dyrektywę kompilatora musi rozpoczynać się od znaku dolara ($). Dozwolone jest użycie jednego z dwóch rodzajów komentarzy:

{$DEFINE blablabla} (*$DEFINE blablabla*)

Pierwszym znakiem komentarza musi być znak dolara ($); jeżeli tak nie jest, komentarz nie jest traktowany jako dyrektywa kompilatora.

Dyrektywy kompilatora

$A

$ALIGN

$APPTYPE

$ASSERTIONS

$B

$BOOLEVAL

$C

$D

$DEBUGINFO

$DEFINE

$DEFINITIONINFO

$DENYPACKAGEUNIT

$DESCRIPTION

$DESIGNONLY

$E

$ELSE

$ELSEIF

$ENDIF

$EXTENDEDSYNTAX

$EXTERNALSYM

$G

$H

$HINTS

$HPPEMIT

$I

$IF

$IFDEF

$IFEND

$IFNDEF

$IFOPT

$IMAGEBASE

$IMPLICITBUILD

$IMPORTEDDATA

$INCLUDE

$IOCHECKS

$J

$L

$LINK

$LOCALSYMBOLS

$LONGSTRINGS

$M

$MAXSTACKSIZE

$MESSAGE

$MINENUMSIZE

$MINSTACKSIZE

$NODEFINE

$NOINCLUDE

$O

$ObjExportAll

$OPENSTRINGS

$OPTIMIZATION

$OVERFLOWCHECKS

$P

$SetPEFlags

$SetPEOptFlags

$Q

$R

Typ: Parametr

Składnia:
{$R nazwa_pliku}
{$RESOURCE nazwa pliku}
{$R *.xxx}
{$R nazwapliku.res nazwapliku.rc}

Dyrektywa $RESOURCE służy do wyboru pliku z zasobami który ma być wkompilowany w program lub bibliotekę. Nazwa pliku musi być zgodna z Windows. Gdy nie jest dopisane żande rozszerzenie domyślnym jest .res. Aby wybrać plik zawierający w swojej nazwię spację należy użyć cudzysłowów np. {$R 'My file'} .

$RANGECHECKS

$REALCOMPATIBILITY

Dyrektywa $REALCOMPATIBILITY przełącza tryb działania typu Real na kompatybilność z Delphi poniżej 4 lub wersjami nowszymi.

Typ: Przełącznik
Składnia: {$REALCOMPATIBILITY ON} lub {$REALCOMPATIBILITY OFF}
Domyślnie: {$REALCOMPATIBILITY OFF}

{$REALCOMPATIBILITY ON} - zmienne typu Real są traktowane jako zmienne Real48 (kompatybilność z Delphi poniżej wersji 4)
{$REALCOMPATIBILITY OFF} - zmienne typu Real są traktowane jako zmienne Double

$REFERENCEINFO

$RESOURCE

Patrz $R

$RUNONLY

$SAFEDIVIDE

$STACKFRAMES

$T

$TYPEDADDRESS

$TYPEINFO

$U

$UNDEF

$V

$VARSTRINGCHECKS

$W

$WARN

$WARNINGS

Dyrektywa $WARNINGS kontorluje generowanie ostrzeżeń przez kompilator.

Typ: Przełącznik
Składnia: {$WARNINGS ON} lub {$WARNINGS OFF}
Domyślnie: {$WARNINGS ON}

{$WARNINGS ON} - kopilator generuje ostrzeżenia w przypadku wykrycia: niezainicjowanych zmiennych, braku rezultatów funkcji, itp.
{$WARNINGS OFF} - kompilator nie generuje żadnych ostrzeżeń

$WEAKPACKAGEUNIT

$WRITEABLECONST

$X

$Y

$Z

6 komentarzy

Marooned: jak pojawią się opisy poszczególnych dyrektyw to się troszku przerzedzi - wtedy pomyślimy, jeśli będzie źle.

Co do opisu poszczególnych dyrektyw: widzi mi się coś a'la Delphi. Almanach, tzn.:

  • składnia z zaznaczeniem domyślnej opcji,
  • opis, najczęstsze zastosowania, ew. sytuacje problemowe bądź różnice w ustawieniach domyślnych między różnymi wersjami Delphi (kompatybilność),
  • przykładowy kawałek kodu, który zobrazuje zastosowanie dyrektywy (przynajmniej w niektórych dyrektywach).

Dokładnie, to dotyczy Delphi (niektóre również TP). Są to dykretywy kompilatora, nie preprocesora ;P Ale fakt, było w złym miejscu - nie zauważyłem tego. Przeniosłem do Delphi.

czarno + bold + gęsto => artykuł staje się ciężki - można spróbować jakoś wprowadzenie lekkości w styl :)
jak? chwilowo nie wiem ;p

Adam, raczej w dziale Delphi, bo to są dyrektywy kompilatora Delphi.

Hmm, chyba w zlym miejscu umiesciles ten artykul, co? Mialo byc w dziale "C"?

Proszę o pomoc w dodawaniu opisów poszczcególnych dyrektyw kompilatora, sam się zamęczę :)