|
|
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]] |