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)
m (copy content since I am not permitted to move sIncludecompilerinfo/de here)
Line 1: Line 1:
{{local compiler directives}}
+
{{$include}}
 +
<br>
 +
Zurück zu den [[local compiler directives/de|lokalen Compilerdirektiven]].<br>
  
 
+
== $I und $INCLUDE ==
Zurück zu den [[Pascal basics/de|Pascal Grundlagen]].<br>
+
Die Direktiven $I und $INCLUDE haben die gleiche Bedeutung.<br>
 
+
Die Direktiven $I und $INCLUDE haben die gleichen Schalter.<br>
 
+
<br>
__TOC__
+
Die Direktiven kennen folgende Schalter:<br>
 
+
<table>
 
+
  <tr>
Lokale Direktiven können mehr als einmal in einer Unit oder in einem Programm verwendet werden.
+
    <td>TIME</td><td>Gibt das aktuelle Datum und die aktuelle Zeit aus.</td>
 
+
  </tr>
=Lokale Compiler Direktiven=
+
  <tr>
 
+
    <td>DATE</td><td>Fügt das aktuelle Datum ein.</td>
[[sAlign/de|$A und $ALIGN]] bestimmt die Datenausrichtung von Records<br>
+
  </tr>
[[$A/de|$A1, $A2,$A4 und $A8]] bestimmt die Datenausrichtung von Records und hat die selbe Wirkung wie die Direktive $PACKRECORDS<br>
+
  <tr>
[[sBooleval/de|$B oder $BOOLEVAL]] im Standardmodus wird dem eigenen Programm die Kurzschlussauswertung von Wahrheitswerten ermöglicht<br>
+
    <td>FPCTARGET</td><td>Fügt den Namen des Zielprozessors ein. Dieser Schalter ist deprecated (hinfällig). Der neue Schalter heisst FPCTARGETCPU.</td>
[[$Assertions/de|$C oder $ASSERTIONS]] dient der Fehlersuche<br>
+
  </tr>
[[$Bitpacking/de|$BITPACKING]] ermöglicht das Bitweise packen von Records<br>
+
  <tr>
[[sCalling/de|$CALLING]] legt die Aufrufkonvention für Unterprogramme fest<br>
+
    <td>FPCTARGETCPU </td><td>Fügt den Namen des Zielprozessors ein.</td>
[[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>
+
  <tr>
[[sCoperators/de|$COPERATORS]] erlaubt die Verwendung von Operatoren ähnlich der wie in der Programmiersprache C<br>
+
    <td>FPCTARGETOS</td><td>Fügt den Namen des Zielbetriebsystems ein.</td>
[[sDefine/de|$DEFINE oder $DEFINEC]] erlaubt die Definition eigener Symbole<br>
+
  </tr>
[[sExtendedsym/de|$EXTENDEDSYM]] wird vom Compiler ignoriert<br>
+
  <tr>
[[sFar/de|$F]] wird vom Compiler ignoriert<br>
+
    <td>FPCVERSION</td><td>Fügt die aktuelle Compilerversion ein.</td>
[[sFputype/de|$FPUTYPE]] compiliert entsprechen dem angegebenen Coprozessortyp den entsprechenden Code<br>
+
  </tr>
[[sGoto/de|$GOTO]] erlaubt dem eigenen Programm die Verwendung von Goto und Label<br>
+
  <tr>
[[$H/de|$H oder $LONGSTRINGS]] erlaubt es den Stringtyp für das reservierte Wort String festzulegen<br>
+
    <td>FILE</td><td>Dateiname, in der die Direktive steht.</td>
[[sHppemit/de|$HPPEMIT]] wird vom Compiler ignoriert<br>
+
  </tr>
[[sImplicitexeptions/de|$IMPLICITEXCEPTIONS]] dient der Vermeidung von Speicherlöchern<br>
+
  <tr>
[[sInline/de|$INLINE]] kopiert Prozeduren an die Stelle ihres Aufrufs<br>
+
    <td>LINE</td><td>Nummer der Zeile, in der die Direktive steht.</td>
[[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>
+
  <tr>
[[sIncludefile/de|$I oder $INCLUDE]] fügt eine Datei in die Compilierung ein<br>
+
    <td>USER</td><td>Gibt den Benutzer an.</td>
[[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>
+
  <tr>
[[sLink/de|$L oder $LINK]] fügt beim Linken (Binden) des Programms die angegebene Objektdatei ein<br>
+
    <td>CURRENTROUTINE</td><td>Name der aktuellen Routine.</td>
[[sLinklib/de|$LINKLIB]] fügt beim Linken (Binden) des Programms die angegebene Bibliothek (DLL) ein<br>
+
  </tr>
[[sTypeinfo/de|$M oder $TYPEINFO]] erstellt Run-Time Type Informationen<br>
+
</table>
[[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>
 
<br>
 
+
Beispiel:<br>
=Lokale Compiler Direktiven nur für Intel 80x86 und kompatible Prozessoren=
+
<syntaxhighlight>
[[sAsmmode/de|$ASMMODE]] Assemblermodus<br>
+
Program InfoDemo;
[[sI386xxx/de|$I386_XXX]] legt das Assemblerformat fest<br>
+
begin
[[sMmx/de|$MMX]] erzwingt Optimierungen für den MMX Prozessor<br>
+
  WriteLn('Compilierzeit:                ' + {$I %TIME%});
[[sSaturation/de|$SATURATION]] Saturation (Schutz gegen Speicherüberlauf) Operationen für den MMX Prozessor<br>
+
  WriteLn('Compilierdatum:              ' + {$I %DATE%});
[[sMaxfpuregisters/de|$MAXFPUREGISTERS]] legt die maximale Anzahl der zu nutzenden Fliesskommaregister fest<br>
+
  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('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|$Q oder $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>
 
<br>
 
<br>
--[[User:Olaf|Olaf]] 17:00, 8 November 2012 (UTC)
+
--[[User:Olaf|Olaf]] 19:21, 16 December 2012 (UTC)
{{AutoCategory}}[[Category:Free Pascal Programmers Guide/de]]
+
[[Category:Free Pascal Programmers Guide/de]]

Revision as of 15:41, 23 August 2020

Deutsch (de) English (en)

Zurück zu den lokalen Compilerdirektiven.

$I und $INCLUDE

Die Direktiven $I und $INCLUDE haben die gleiche Bedeutung.
Die Direktiven $I und $INCLUDE haben die gleichen Schalter.

Die Direktiven kennen folgende Schalter:

TIMEGibt das aktuelle Datum und die aktuelle Zeit aus.
DATEFügt das aktuelle Datum ein.
FPCTARGETFügt den Namen des Zielprozessors ein. Dieser Schalter ist deprecated (hinfällig). Der neue Schalter 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.
USERGibt den Benutzer an.
CURRENTROUTINEName der aktuellen Routine.


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('Name der aktuellen Routine:   ' + {$I %CURRENTROUTINE%});
end.



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

--Olaf 19:21, 16 December 2012 (UTC)