AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erklärung zu Compilerschalter

Ein Thema von RWarnecke · begonnen am 5. Mai 2007 · letzter Beitrag vom 5. Mai 2007
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Erklärung zu Compilerschalter

  Alt 5. Mai 2007, 10:16
Hallo zusammen,

ich habe jetzt schon mehrmals verschiedene Compilerschalter gesehen wie hier zum Beispiel :
Code:
{$DEFINE DEBUG}      // ---> Aktiviert den Debug Modus mit Ereigniss

{$B-}  // Complete Boolean Evaluation
{$T-}  // Typed @ operator
{$X+}  // Extended syntax
{$P+}  // Open string params
{$J+}  // Writeable structured consts
{$H+}  // Use long strings by default
{$O+}  // Optimization
{$R-}  // Range-Checking
{$V-}  // Var-String Checking

{$IFDEF DEBUG}
  {$D+}  // Debug information
  {$L+}  // Local symbol information
  {$YD+}
  {$C+} // Asserts
  {$WARNINGS ON}
  {$HINTS ON}
{$ELSE}
  {$D-}  // Debug information
  {$L-}  // Local symbol information
  {$YD-}
  {$C-} // Asserts
  {$WARNINGS OFF}
  {$HINTS OFF}
{$ENDIF}

{$IFDEF VER180}             //Delphi 2006
  {$DEFINE DELPHI6}
  {$DEFINE DELPHI7}
  {$DEFINE DELPHI8}
  {$DEFINE DELPHI2005}
  {$DEFINE DELPHI2006}
{$ENDIF}

{$IFDEF VER170}             //Delphi 2005
  {$DEFINE DELPHI6}
  {$DEFINE DELPHI7}
  {$DEFINE DELPHI8}
  {$DEFINE DELPHI2005}
{$ENDIF}

{$IFDEF VER160}             //Delphi 8
  {$DEFINE DELPHI6}
  {$DEFINE DELPHI7}
  {$DEFINE DELPHI8}
{$ENDIF}

{$IFDEF VER150}             //Delphi 7
  {$DEFINE DELPHI6}
  {$DEFINE DELPHI7}
{$ENDIF}

{$IFDEF VER140}             //Delphi 7
  {$DEFINE DELPHI6}
{$ENDIF}

{$IFDEF DELPHI6}
  {$WARN UNIT_LIBRARY OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN SYMBOL_DEPRECATED OFF}
{$ENDIF}
Gibt es irgendwo eine Erklärung dieser Schalter ? Einen dieser Schalter {$WARN UNIT_PLATFORM OFF} kenne ich ja schon. Was kann ich mit diesen Schaltern erreichen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Erklärung zu Compilerschalter

  Alt 5. Mai 2007, 10:38
Schau in der Hilfe nach. Das sind übrigens nicht alles Schalter, das sind auch andere Direktiven, z.B. IFDEF, mit dem man eine bedingte Kompilierung erreichen kann.

Delphi-Quellcode:
  {$IFDEF Win32}
    LB: String=#13#10;
    LOGFILE='./log.txt';
  {$ELSE}{$IFDEF MACOS}
    LB: String=#13;
    LOGFILE='./log';
  {$ELSE}
    LB: String=#10;
    LOGFILE='./log';
  {$ENDIF}
  {$ENDIF}
Das ist z.B. eine Anwendungsmöglichkeit. Ich überprüfe, unter welchem Betriebssystem kompiliert wird.

Wenn es unter Windows kompiliert wird, wird LB (Line Break, also Zeilenumbruch) auf #13#10 gesetzt, wie es unter Windows normal ist. Der Dateiname des Logs ist log.txt. Unter Mac wird LB auf #13 gesetzt und der Logdateiname ist log. Ansonsten nehme ich ein unixoides System an und setze LB auf #10 und den Logdateinamen wieder auf log.


Mit den Schaltern kannst du vor allem den Compiler und den Linker beeinflussen, die Standardeinstellung ist hierbei meistens das beste. Beim Debuggen kann es aber manchmal ganz nützlich sein, die Optimierung mit {$O-} auszuschalten.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Erklärung zu Compilerschalter

  Alt 5. Mai 2007, 11:26
Wann setze ich solche Schalter ? Wenn ich Komponenten erstelle oder wenn ich auch ganz normale Programme schreibe ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Erklärung zu Compilerschalter

  Alt 5. Mai 2007, 11:48
Moin Rolf,

Zitat von RWarnecke:
Wann setze ich solche Schalter ?
das klingt jetzt vielleicht ein wenig blöd, aber:
Du musst sie da setzten, wo Du sie jeweils brauchst, unabhängig davon, ob es sich um eine Komponente oder ein vollständiges Programm handelt.

Ich hatte das, beispielsweise, bei einer Klasse, die die Indys dynamisch einbindet.
Da ich unter D7 Indy 9 installiert habe, und unter D2006 Indy 10, musste ich ein paar Stellen in Abhängigkeit des verwendeten Compilers compilieren, da Indy 10 nicht vollständig abwärtskompatibel zu Indy 9 ist.

Ein Beispiel bei dem intensiv von bedingter Compilierung gebrauch gemacht wird ist FastMM (http://sourceforge.net/projects/fastmm/).
Lade Dir das mal runter, und schau Dir die FastMM4Options.inc an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz