Programowanie w języku Delphi » Artykuły

Dyrektywa kompilatora

  • 2005-12-30 16:38
  • 6 komentarzy
  • 1384 odsłony
  • Oceń ten tekst jako pierwszy

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



Spis treści

          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



$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

brodny 2005-12-29 22:46

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).

Marooned 2005-12-29 19:55

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

brodny 2005-12-29 14:04

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.

Ktos 2005-12-29 12:42

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

Adam Boduch 2005-12-29 12:35

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

brodny 2005-12-29 12:02

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