Difference between revisions of "$include/de"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{local compiler directives}} <br> __TOC__ <br> Lokale Direktiven können mehr als einmal in einer Unit oder in einem Programm verwendet werden.<br> =Lokale Compiler Direktive...")
 
(Schalter -> Bezeichner)
 
(38 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{local compiler directives}}
+
{{$include}}
 +
 
 +
== $I oder $INCLUDE ==
 +
Die Direktive $INCLUDE oder $I dient dem Einfügen einer Datei.<br>
 +
Die Direktive $INCLUDE oder $I fügt an der Stelle an der die Anweisung steht eine Datei ein.<br>
 +
Falls die einzufügende Datei keine Dateiendung hat, dann sucht der Compiler nach einer Datei mit der Endung .pp.<br>
 +
Die Anzahl der einzufügenden Dateien ist auf die Anzahl der verfügbaren file descriptors des Free Pascal Compilers beschränkt.<br>
 
<br>
 
<br>
__TOC__
+
Beispiel:<br>
 +
<syntaxhighlight lang="pascal">
 +
{$INCLUDE test1.pas} // sucht im aktuellen Verzeichnis nach der Datei test1.pas
 +
{$INCLUDE ../test2.pas} // sucht im übergeordneten Verzeichnis nach der Datei test2.pas
 +
</syntaxhighlight>
 +
 
 +
 
 +
== $I und $INCLUDE ==
 +
Die Direktiven $I und $INCLUDE haben die gleiche Bedeutung.<br>
 +
Die Direktiven $I und $INCLUDE unterstützen die gleichen Bezeichner.<br>
 
<br>
 
<br>
Lokale Direktiven können mehr als einmal in einer Unit oder in einem Programm verwendet werden.<br>
+
Die Direktiven kennen folgende Bezeichner:<br>
=Lokale Compiler Direktiven=
+
<table>
[[sAlign/de|$A und $ALIGN] bestimmt die Datenausrichtung von Records<br>
+
  <tr>
[[sA/de|$A1, $A2,$A4 und $A8]] hat die selbe Wirkung wie die Direktive $PACKRECORDS<br>
+
    <td>TIME</td><td>Gibt das aktuelle Datum und die aktuelle Zeit aus.</td>
[[sBooleval/de|$B oder $BOOLEVAL]] im Standardmodus wird dem eigenen Programm die Kurzschlussauswertung von Wahrheitswerten ermöglicht<br>
+
  </tr>
[[sAssertions/de|$C oder $ASSERTIONS]] dient der Fehlersuche<br>
+
  <tr>
[[sBitpacking/de|$BITPACKING]] stellt das Bitweise packen von Records ein<br>
+
    <td>DATE</td><td>Fügt das aktuelle Datum ein.</td>
[[sCalling/de|$CALLING]] legt die Aufrufkonvention für Unterprogramme fest<br>
+
  </tr>
[[sCheckpointer/de|$CHECKPOINTER]] prüft, ob ein Pointer einen gültigen Wert hat<br>
+
  <tr>
[[sCodealign/de|$CODEALIGN]] bestimmt die Ausrichtung des Codes im Speicher<br>
+
    <td>FPCTARGET</td><td>Fügt den Namen des Zielprozessors ein. Dieser Bezeichner ist deprecated (hinfällig). Der neue Bezeichner heisst FPCTARGETCPU.</td>
[[sCoperators/de|$COPERATORS]] erlaubt die Verwendung von Operatoren ähnlich der wie in der Programmiersprache C<br>
+
  </tr>
[[sDefine/de|$DEFINE oder $DEFINEC]] erlaubt die Definition eigener Symbole<br>
+
  <tr>
[[sExtendedsym/de|$EXTENDEDSYM]] wird vom Compiler ignoriert<br>
+
    <td>FPCTARGETCPU </td><td>Fügt den Namen des Zielprozessors ein.</td>
[[sFar/de|$F]] wird vom Compiler ignoriert<br>
+
  </tr>
[[sFputype/de|$FPUTYPE]] legt für das eigene Programm einen bestimmten Coprozessor fest<br>
+
  <tr>
[[sGoto/de|$GOTO]] erlaubt dem eigenen Programm die Verwendung von Goto und Label<br>
+
    <td>FPCTARGETOS</td><td>Fügt den Namen des Zielbetriebsystems ein.</td>
[[sH/de|$H oder $LONGSTRINGS]] erlaubt es den Stringtyp für das reservierte Wort String festzulegen<br>
+
  </tr>
[[sHppemit/de|$HPPEMIT]] wird vom Compiler ignoriert<br>
+
  <tr>
[[sImplicitexeptions/de|$IMPLICITEXCEPTIONS]] dient der Vermeidung von Speicherlöchern<br>
+
    <td>FPCVERSION</td><td>Fügt die aktuelle Compilerversion ein.</td>
[[sInline/de|$INLINE]] kopiert Prozeduren an die Stelle ihres Aufrufs<br>
+
  </tr>
[[sInterfaces/de|$INTERFACES]] legt fest, welcher Schnittstellentyp bei der Deklaration der Schnittstellen verwendet werden soll<br>
+
  <tr>
[[sIochecks/de|$I oder $IOCHECKS]] steuert, ob Ein- Aussgabeschnittstellen kontolliert werden sollen<br>
+
    <td>FILE</td><td>Dateiname, in der die Direktive steht.</td>
[[sIncludefile/de|$I oder $INCLUDE]] fügt eine Datei in die Compilierung ein<br>
+
  </tr>
[[sIncludecompilerinfo/de|$I oder $INCLUDE]] fügt bestimmte Compilerinformationen in das Programm ein<br>
+
  <tr>
[[sWritableconst/de|$J oder $WRITEABLECONST]] erlaubt während der Programmlaufzeit eine Wertzuweisung an typisierte Konstanten<br>
+
    <td>LINE</td><td>Nummer der Zeile, in der die Direktive steht.</td>
[[sLink/de|$L oder $LINK]] fügt beim Linken (Binden) des Programms die angegebene Datei ein<br>
+
  </tr>
[[sLinklib/de|$LINKLIB]] fügt beim Linken (Binden) des Programms die angegebene Bibliothek ein<br>
+
  <tr>
[[sTypeinfo/de|$M oder $TYPEINFO]] erstellt Run-Time Type Informationen<br>
+
    <td>CURRENTROUTINE</td><td>Name der aktuellen Routine.</td>
[[sMacro/de|$MACRO]] erlaubt die Verwendung von Makros<br>
+
  </tr>
[[sMinenumsize/de|$MINENUMSIZE]] dient der Kompatibilität zu Delphi, siehe [[sPackenum/de|$PACKENUM oder $Z]]<br>
+
</table>
[[sMinfpconstprec/de|$MINFPCONSTPREC]] legt die minimale Genauigkeit von Fliesskommakonstanten fest<br>
+
Andere Bezeichner werden aus den Umgebungsvariablen des Compiler Prozesses genommen.
[[sNodedefine/de|$NODEFINE]] wird vom Compiler ignoriert<br>
 
[[sObjectchecks/de|$OBJECTCHECKS]] kontrolliert die Verwendung des Self Pointers<br>
 
[[sOptimazion/de|$OPTIMIZATION]] erlaubt bestimmte Optimierungen<br>
 
[[sOutput_format/de|$OUTPUT_FORMAT]] legt den Typ der vom Compiler erstellten Ausgabe der Objektdatei fest<br>
 
[[sPackenum/de|$PACKENUM oder $Z]] erlaubt dem Compiler Enumerationen (Aufzählungen) zu packen<br>
 
[[sPackrecords/de|$PACKRECORDS]] bestimmt, wie Records im Arbeitsspeicher ausgerichtet werden<br>
 
[[sPackset/de|$PACKSET]] legt die Art und Weise fest, wie ein Set gepackt wird<br>
 
[[sPop/de|$POP]] stellt die letzten Compiler Einstellungen wieder her<br>
 
[[sPush/de|$PUSH]] sichert die aktuellen Compiler Einstellungen<br>
 
[[sOverflowchecks/de|$OVERFLOWCHECKS]] überwacht den Überlauf von Integervariablen<br>
 
[[sRangechecks/de|$R oder $RANGECHECKS]] überprüft, ob bei diversen Bereichen der Index überläuft<br>
 
[[sResource/de|$R oder $RESOURCE]] bindet eine Resourcendatei ein<br>
 
[[sStatic/de|$STATIC]] erlaubt die Verwendung des reservierten Wortes static<br>
 
[[sTypeadress/de|$T oder $TYPEDADDRESS]] bestimmt, ob der Adressoperator @ einen typisiertern oder untypisiertern Pointer zurück gibt<br>
 
[[sUndef/de|$UNDEF]] hebt die Definition eines Symbols auf<br>
 
[[sVarstringchecks/de|$V oder $VARSTRINGCHECKS]] legt fest, wie streng der Compiler Stringzuweisungen an Strings prüft<br>
 
[[sStackframes/de|$W or $STACKFRAMES]] legt die Bedigungen für die Erstellung von Stackframes fest<br>
 
[[sWait/de|$WAIT]] wartet mit der Verarbeitung bis die Enter-Taste gedrückt wird<br>
 
[[sZ/de|$Z1, $Z2 and $Z4]] erlaubt dem Compiler Enumerationen (Aufzählungen) zu packen<br>
 
==Bedingte Compilierung==
 
[[sElse/de|$ELSE]] ist eine Verzweigung der bedingten Compilierung<br>
 
[[sElseIf/de|$ELSEIF]] ist eine Verzweigung mit Bedingung der bedingten Compilierung<br>
 
[[sEndif/de|$ENDIF]] ist das Ende einer bedingten Compilierung<br>
 
[[sIf/de|$IF]] ist der Anfang der bedingten Compilierung<br>
 
[[sIfdef/de|$IFDEF]] ist der Anfang einer bedingten Compilierung<br>
 
[[sIfndef/de|$IFNDEF]] ist der Anfang einer bedingten Compilierung<br>
 
[[sIfopt/de|$IFOPT]] ist der Anfang einer bedingten Compilierung<br>
 
==Warnungen, Meldungen, Hinweise==
 
[[sError/de|$ERROR]] gibt eine Fehlermeldung aus<br>
 
[[sFatal/de|$FATAL]] gibt eine fatale Fehlermeldung aus<br>
 
[[sHint/de|$HINT]] erstellt eine Hinweismeldung<br>
 
[[sHints/de|$HINTS]] erlaubt Hinweismeldungen<br>
 
[[sInfo/de|$INFO]] gibt eine Infomeldung aus<br>
 
[[sMessage/de|$MESSAGE]] erstellt eine Infonachricht<br>
 
[[sNote/de|$NOTE]] erstellt eine Notizmeldung<br>
 
[[sNotes/de|$NOTES]] erlaubt das erstellen von Notizmeldungen<br>
 
[[sStop/de|$STOP]] gibt eine fatale Fehlermeldung aus<br>
 
[[sWarning/de|$WARNING]] erstellt eine Warnmeldung<br>
 
[[sWarnings/de|$WARNINGS]] erlaubt Warnmeldungen<br>
 
 
<br>
 
<br>
=Lokale Compiler Direktiven nur für Intel 80x86 und kompatible Prozessoren=
+
Beispiel:
[[sAsmmode/de|$ASMMODE]] Assemblermodus<br>
+
<syntaxhighlight lang="pascal">
[[sI386xxx/de|$I386_XXX]] legt das Assemblerformat fest<br>
+
Program InfoDemo;
[[sMmx/de|$MMX]] erzwingt Optimierungen für den MMX Prozessor<br>
+
begin
[[sSaturation/de|$SATURATION]] Saturation (Schutz gegen Speicherüberlauf) Operationen für den MMX Prozessor<br>
+
  WriteLn('Compilierzeit:                ' + {$I %TIME%});
[[sMaxfpuregisters/de|$MAXFPUREGISTERS]] legt die maximale Anzahl an zu nutzenden Fliesskommaregistern fest<br>
+
  WriteLn('Compilierdatum:              ' + {$I %DATE%});
 +
  WriteLn('Erforderliche CPU:            ' + {$I %FPCTARGETCPU%});
 +
  WriteLn('Erforderliche CPU (veraltet): ' + {$I %FPCTARGET%});
 +
  WriteLn('Betriebssystem:              ' + {$I %FPCTARGETOS%});
 +
  WriteLn('FPC Version:                  ' + {$I %FPCVERSION%});
 +
  WriteLn('Name der Datei:              ' + {$I %FILE%});
 +
  WriteLn('Aktuelle Zeile als String:    ' + {$I %LINE%});
 +
  WriteLn('Aktuelle Zeile als Int:      ' + IntToStr({$I %LINENUM%}));
 +
  WriteLn('Compilierer:                  ' + {$I %USER%});
 +
  WriteLn('Home-Ordner des Benutzers:    ' + {$I %HOME%});
 +
  WriteLn('Name der aktuellen Routine:  ' + {$I %CURRENTROUTINE%});
 +
end.
 +
</syntaxhighlight>
 
<br>
 
<br>
=Lokale Compiler Direktiven nur für das Betriebssystem Darwin=
 
[[sLinkframework/de|$LINKFRAMEWORK]] fügt ein Framework ein<br>
 
 
<br>
 
<br>
=Lokale Compiler Direktiven nur für Compiler Mode MacPas=
+
Hinweis: Für Infos über Lazarus, kann die Unit <b>LCLVersion</b> eingebunden werden.
Diese Befehle werden aus Kompatibilität zum existierenden Mac OS Pascal Compiler unterstützt:<br>
 
[[sAlign/de|$A und $ALIGN] bestimmt die Datenausrichtung von Records<br>
 
[[sErrorc/de|$ERRORC]] gibt eine Fehlermeldung aus<br>
 
[[sOv/de|$OV]] überwacht den Überlauf von Integervariablen<br>
 
==Bedingte Compilierung==
 
[[sElsec/de|$ELSEC]] ist eine Verzweigung der bedingten Compilierung<br>
 
[[sElifc/de|$ELIFC]] ist eine Verzweigung der bedingten Compilierung<br>
 
[[sEndc/de|$ENDC]] ist das Ende einer bedingten Compilierung<br>
 
[[sIfc/de|$IFC]] ist der Anfang einer bedingten Compilierung<br>
 
==Symbole==
 
[[sDefinec/de|$DEFINEC]] erlaubt die Definition eigener Symbole<br>
 
[[sSetc/de|$SETC]] definiert ein Symbol und weist ihm einen Wert zu<br>
 
[[sUndefc/de|$UNDEFC]] hebt die Definition eines Symbols auf<br>
 
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 17:00, 8 November 2012 (UTC)
 
[[category:Pascal]]{{AutoCategory}}
 

Latest revision as of 15:18, 9 April 2022

Deutsch (de) English (en)

$I oder $INCLUDE

Die Direktive $INCLUDE oder $I dient dem Einfügen einer Datei.
Die Direktive $INCLUDE oder $I fügt an der Stelle an der die Anweisung steht eine Datei ein.
Falls die einzufügende Datei keine Dateiendung hat, dann sucht der Compiler nach einer Datei mit der Endung .pp.
Die Anzahl der einzufügenden Dateien ist auf die Anzahl der verfügbaren file descriptors des Free Pascal Compilers beschränkt.

Beispiel:

{$INCLUDE test1.pas} // sucht im aktuellen Verzeichnis nach der Datei test1.pas
{$INCLUDE ../test2.pas} // sucht im übergeordneten Verzeichnis nach der Datei test2.pas


$I und $INCLUDE

Die Direktiven $I und $INCLUDE haben die gleiche Bedeutung.
Die Direktiven $I und $INCLUDE unterstützen die gleichen Bezeichner.

Die Direktiven kennen folgende Bezeichner:

TIMEGibt das aktuelle Datum und die aktuelle Zeit aus.
DATEFügt das aktuelle Datum ein.
FPCTARGETFügt den Namen des Zielprozessors ein. Dieser Bezeichner ist deprecated (hinfällig). Der neue Bezeichner heisst FPCTARGETCPU.
FPCTARGETCPU Fügt den Namen des Zielprozessors ein.
FPCTARGETOSFügt den Namen des Zielbetriebsystems ein.
FPCVERSIONFügt die aktuelle Compilerversion ein.
FILEDateiname, in der die Direktive steht.
LINENummer der Zeile, in der die Direktive steht.
CURRENTROUTINEName der aktuellen Routine.

Andere Bezeichner werden aus den Umgebungsvariablen des Compiler Prozesses genommen.
Beispiel:

Program InfoDemo;
begin
  WriteLn('Compilierzeit:                ' + {$I %TIME%});
  WriteLn('Compilierdatum:               ' + {$I %DATE%});
  WriteLn('Erforderliche CPU:            ' + {$I %FPCTARGETCPU%});
  WriteLn('Erforderliche CPU (veraltet): ' + {$I %FPCTARGET%});
  WriteLn('Betriebssystem:               ' + {$I %FPCTARGETOS%});
  WriteLn('FPC Version:                  ' + {$I %FPCVERSION%});
  WriteLn('Name der Datei:               ' + {$I %FILE%});
  WriteLn('Aktuelle Zeile als String:    ' + {$I %LINE%});
  WriteLn('Aktuelle Zeile als Int:       ' + IntToStr({$I %LINENUM%}));
  WriteLn('Compilierer:                  ' + {$I %USER%});
  WriteLn('Home-Ordner des Benutzers:    ' + {$I %HOME%});
  WriteLn('Name der aktuellen Routine:   ' + {$I %CURRENTROUTINE%});
end.



Hinweis: Für Infos über Lazarus, kann die Unit LCLVersion eingebunden werden.