Difference between revisions of "$include/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Kai Burghardt moved page local compiler directives/de to $include/de: pagetitle unification)
(Schalter -> Bezeichner)
 
(5 intermediate revisions by 3 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>
 +
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>
  
Zurück zu den [[Pascal basics/de|Pascal Grundlagen]].<br>
 
  
 
+
== $I und $INCLUDE ==
__TOC__
+
Die Direktiven $I und $INCLUDE haben die gleiche Bedeutung.<br>
 
+
Die Direktiven $I und $INCLUDE unterstützen die gleichen Bezeichner.<br>
 
 
Lokale Direktiven können mehr als einmal in einer Unit oder in einem Programm verwendet werden.
 
 
 
=Lokale Compiler Direktiven=
 
 
 
[[sAlign/de|$A und $ALIGN]] bestimmt die Datenausrichtung von Records<br>
 
[[$A/de|$A1, $A2,$A4 und $A8]] bestimmt die Datenausrichtung von Records und hat die selbe Wirkung wie die Direktive $PACKRECORDS<br>
 
[[sBooleval/de|$B oder $BOOLEVAL]] im Standardmodus wird dem eigenen Programm die Kurzschlussauswertung von Wahrheitswerten ermöglicht<br>
 
[[$Assertions/de|$C oder $ASSERTIONS]] dient der Fehlersuche<br>
 
[[$Bitpacking/de|$BITPACKING]] ermöglicht das Bitweise packen von Records<br>
 
[[sCalling/de|$CALLING]] legt die Aufrufkonvention für Unterprogramme fest<br>
 
[[sCheckpointer/de|$CHECKPOINTER]] prüft, ob ein Pointer einen gültigen Wert hat<br>
 
[[sCodealign/de|$CODEALIGN]] bestimmt die Ausrichtung des Codes im Speicher<br>
 
[[sCoperators/de|$COPERATORS]] erlaubt die Verwendung von Operatoren ähnlich der wie in der Programmiersprache C<br>
 
[[sDefine/de|$DEFINE oder $DEFINEC]] erlaubt die Definition eigener Symbole<br>
 
[[sExtendedsym/de|$EXTENDEDSYM]] wird vom Compiler ignoriert<br>
 
[[sFar/de|$F]] wird vom Compiler ignoriert<br>
 
[[sFputype/de|$FPUTYPE]] compiliert entsprechen dem angegebenen Coprozessortyp den entsprechenden Code<br>
 
[[sGoto/de|$GOTO]] erlaubt dem eigenen Programm die Verwendung von Goto und Label<br>
 
[[$H/de|$H oder $LONGSTRINGS]] erlaubt es den Stringtyp für das reservierte Wort String festzulegen<br>
 
[[sHppemit/de|$HPPEMIT]] wird vom Compiler ignoriert<br>
 
[[sImplicitexeptions/de|$IMPLICITEXCEPTIONS]] dient der Vermeidung von Speicherlöchern<br>
 
[[sInline/de|$INLINE]] kopiert Prozeduren an die Stelle ihres Aufrufs<br>
 
[[sInterfaces/de|$INTERFACES]] legt fest, welcher Schnittstellentyp bei der Deklaration der Schnittstellen verwendet werden soll<br>
 
[[sIochecks/de|$I oder $IOCHECKS]] steuert, ob Ein- Aussgabeschnittstellen kontolliert werden sollen<br>
 
[[sIncludefile/de|$I oder $INCLUDE]] fügt eine Datei in die Compilierung ein<br>
 
[[sIncludecompilerinfo/de|$I oder $INCLUDE]] fügt bestimmte Compilerinformationen in das Programm ein<br>
 
[[sWritableconst/de|$J oder $WRITEABLECONST]] erlaubt während der Programmlaufzeit eine Wertzuweisung an typisierte Konstanten<br>
 
[[sLink/de|$L oder $LINK]] fügt beim Linken (Binden) des Programms die angegebene Objektdatei ein<br>
 
[[sLinklib/de|$LINKLIB]] fügt beim Linken (Binden) des Programms die angegebene Bibliothek (DLL) ein<br>
 
[[sTypeinfo/de|$M oder $TYPEINFO]] erstellt Run-Time Type Informationen<br>
 
[[sMacro/de|$MACRO]] erlaubt die Verwendung von Makros<br>
 
[[sMinenumsize/de|$MINENUMSIZE]] dient der Kompatibilität zu Delphi, siehe [[sPackenum/de|$PACKENUM oder $Z]]<br>
 
[[sMinfpconstprec/de|$MINFPCONSTPREC]] legt die minimale Genauigkeit von Fliesskommakonstanten fest<br>
 
[[sNodefine/de|$NODEFINE]] wird vom Compiler ignoriert<br>
 
[[sObjectchecks/de|$OBJECTCHECKS]] kontrolliert die Verwendung des Self Pointers<br>
 
[[sOptimization/de|$OPTIMIZATION]] erlaubt bestimmte Optimierungen<br>
 
[[sOutput_format/de|$OUTPUT_FORMAT]] legt das Ausgabeformat der vom Compiler erstellten 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 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>
 
[[sTypedadress/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>
 
==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>
 
==Selbstdefinierte Compiler- Warnungen, Meldungen, Hinweise usw.==
 
[[sError/de|$ERROR]] gibt eine selbstdefinierte Fehlermeldung aus<br>
 
[[sFatal/de|$FATAL]] gibt eine selbstdefinierte fatale Fehlermeldung aus<br>
 
[[sHint/de|$HINT]] erstellt eine selbstdefinierte Hinweismeldung<br>
 
[[sHints/de|$HINTS]] erlaubt selbstdefinierte Hinweismeldungen<br>
 
[[sInfo/de|$INFO]] gibt eine selbstdefinierte Infomeldung aus<br>
 
[[sMessage/de|$MESSAGE]] erstellt eine selbstdefinierte Infonachricht<br>
 
[[sNote/de|$NOTE]] erstellt eine selbstdefinierte Notizmeldung<br>
 
[[sNotes/de|$NOTES]] erlaubt das erstellen von selbstdefinierten Notizmeldungen<br>
 
[[sStop/de|$STOP]] gibt eine selbstdefinierte fatale Fehlermeldung aus<br>
 
[[sWarning/de|$WARNING]] erstellt eine selbstdefinierte Warnmeldung<br>
 
[[sWarnings/de|$WARNINGS]] erlaubt selbstdefinierte Warnmeldungen<br>
 
<br>
 
 
 
=Lokale Compiler Direktiven nur für Intel 80x86 und kompatible Prozessoren=
 
[[sAsmmode/de|$ASMMODE]] Assemblermodus<br>
 
[[sI386xxx/de|$I386_XXX]] legt das Assemblerformat fest<br>
 
[[sMmx/de|$MMX]] erzwingt Optimierungen für den MMX Prozessor<br>
 
[[sSaturation/de|$SATURATION]] Saturation (Schutz gegen Speicherüberlauf) Operationen für den MMX Prozessor<br>
 
[[sMaxfpuregisters/de|$MAXFPUREGISTERS]] legt die maximale Anzahl der zu nutzenden Fliesskommaregister fest<br>
 
 
<br>
 
<br>
 
+
Die Direktiven kennen folgende Bezeichner:<br>
=Lokale Compiler Direktiven nur für das Betriebssystem Darwin=
+
<table>
[[sLinkframework/de|$LINKFRAMEWORK]] fügt ein Framework ein<br>
+
  <tr>
 +
    <td>TIME</td><td>Gibt das aktuelle Datum und die aktuelle Zeit aus.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>DATE</td><td>Fügt das aktuelle Datum ein.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>FPCTARGET</td><td>Fügt den Namen des Zielprozessors ein. Dieser Bezeichner ist deprecated (hinfällig). Der neue Bezeichner heisst FPCTARGETCPU.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>FPCTARGETCPU </td><td>Fügt den Namen des Zielprozessors ein.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>FPCTARGETOS</td><td>Fügt den Namen des Zielbetriebsystems ein.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>FPCVERSION</td><td>Fügt die aktuelle Compilerversion ein.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>FILE</td><td>Dateiname, in der die Direktive steht.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>LINE</td><td>Nummer der Zeile, in der die Direktive steht.</td>
 +
  </tr>
 +
  <tr>
 +
    <td>CURRENTROUTINE</td><td>Name der aktuellen Routine.</td>
 +
  </tr>
 +
</table>
 +
Andere Bezeichner werden aus den Umgebungsvariablen des Compiler Prozesses genommen.
 
<br>
 
<br>
=Lokale Compiler Direktiven nur für Compiler Mode MacPas=
+
Beispiel:
Diese Befehle werden aus Kompatibilität zum existierenden Mac OS Pascal Compiler unterstützt:<br>
+
<syntaxhighlight lang="pascal">
[[sAlign/de|$A und $ALIGN]] bestimmt die Datenausrichtung von Records<br>
+
Program InfoDemo;
[[sErrorc/de|$ERRORC]] gibt eine Fehlermeldung aus<br>
+
begin
[[sOv/de|$Q oder $OV]] überwacht den Überlauf von Integervariablen<br>
+
  WriteLn('Compilierzeit:                ' + {$I %TIME%});
==Bedingte Compilierung==
+
  WriteLn('Compilierdatum:              ' + {$I %DATE%});
[[sElsec/de|$ELSEC]] ist eine Verzweigung der bedingten Compilierung<br>
+
  WriteLn('Erforderliche CPU:            ' + {$I %FPCTARGETCPU%});
[[sElifc/de|$ELIFC]] ist eine Verzweigung der bedingten Compilierung<br>
+
  WriteLn('Erforderliche CPU (veraltet): ' + {$I %FPCTARGET%});
[[sEndc/de|$ENDC]] ist das Ende einer bedingten Compilierung<br>
+
  WriteLn('Betriebssystem:              ' + {$I %FPCTARGETOS%});
[[sIfc/de|$IFC]] ist der Anfang einer bedingten Compilierung<br>
+
  WriteLn('FPC Version:                  ' + {$I %FPCVERSION%});
==Symbole==
+
  WriteLn('Name der Datei:              ' + {$I %FILE%});
[[sDefinec/de|$DEFINEC]] erlaubt die Definition eigener Symbole<br>
+
  WriteLn('Aktuelle Zeile als String:    ' + {$I %LINE%});
[[sSetc/de|$SETC]] definiert ein Symbol und weist ihm einen Wert zu<br>
+
  WriteLn('Aktuelle Zeile als Int:      ' + IntToStr({$I %LINENUM%}));
[[sUndefc/de|$UNDEFC]] hebt die Definition eines Symbols auf<br>
+
  WriteLn('Compilierer:                  ' + {$I %USER%});
 +
  WriteLn('Home-Ordner des Benutzers:    ' + {$I %HOME%});
 +
  WriteLn('Name der aktuellen Routine:  ' + {$I %CURRENTROUTINE%});
 +
end.
 +
</syntaxhighlight>
 
<br>
 
<br>
 
<br>
 
<br>
--[[User:Olaf|Olaf]] 17:00, 8 November 2012 (UTC)
+
Hinweis: Für Infos über Lazarus, kann die Unit <b>LCLVersion</b> eingebunden werden.
{{AutoCategory}}[[Category:Free Pascal Programmers Guide/de]]
 

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.