Xpp: Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „==XPP ist der Compiler von Alaska Software Inc.== ==Die Compiler Schalter== /? -> zeigt eine Information über die Compilerschalter und die i…“)
 
Keine Bearbeitungszusammenfassung
Zeile 3: Zeile 3:
==Die Compiler Schalter==
==Die Compiler Schalter==


  /?                -> zeigt eine Information über die Compilerschalter und die installierte Xbase++ Version am Bildschirm an. Kann '''nicht''' mit anderen Schaltern kombiniert werden.
  /?                -> zeigt eine Information über die Compilerschalter und die installierte Xbase++
  /a                -> hiermit werden alle mit [[PRIVATE]], [[PUBLIC]] oder [[PARAMETERS]] spezifizierten Variablen als [[MEMVAR]] deklariert
                      Version am Bildschirm an. Kann '''nicht''' mit anderen Schaltern
  /b                -> hiermit werden Debug Informationen eingebunden um im Debugger [[XPPdbg]], oder in der [[VX]] ablaufende Programme genauer untersuchen zu können.
                      kombiniert werden.
  /a                -> hiermit werden alle mit [[PRIVATE]], [[PUBLIC]] oder [[PARAMETERS]]
                      spezifizierten Variablen als [[MEMVAR]] deklariert
  /b                -> hiermit werden Debug Informationen eingebunden um im Debugger [[XPPdbg]],
                      oder in der [[VX]] ablaufende Programme genauer untersuchen zu können.
  /coff            ->
  /coff            ->
  /com              ->
  /com              ->
Zeile 30: Zeile 34:
  /u[<name>]        ->
  /u[<name>]        ->
  /v                ->
  /v                ->
  /w                -> es werden Warnungen angezeigt, wenn der Compiler auf nicht deklarierte Variablen, oder Feldvariablen ohne Aliasbezeichnungen stößt*
  /w                -> es werden Warnungen angezeigt, wenn der Compiler auf nicht deklarierte
  /wi              -> es werden Warnungen angezeigt, wenn der Compiler auf nicht initialisierte Variablen stößt, die aber eigentlich einen Wert haben müßten*
                      Variablen, oder Feldvariablen ohne Aliasbezeichnungen stößt*
  /wl              -> es werden Warnungen angezeigt, wenn der Compiler auf nichtlexikalische Variablen stößt.*
  /wi              -> es werden Warnungen angezeigt, wenn der Compiler auf nicht initialisierte
                      Variablen stößt, die aber eigentlich einen Wert haben müßten*
  /wl              -> es werden Warnungen angezeigt, wenn der Compiler auf nichtlexikalische  
                      Variablen stößt.*
  /wn              ->
  /wn              ->
  /w                ->
  /w                ->
  /wu              -> es werden Warnungen angezeigt, wenn der Compiler auf nicht benutzte lexikalische Variablen stößt, die deklariert wurden, aber nicht in Benutzung sind.
  /wu              -> es werden Warnungen angezeigt, wenn der Compiler auf nicht benutzte
                      (ermöglicht es den Code schlank zu halten)*
                      lexikalische Variablen stößt, die deklariert wurden, aber nicht in Benutzung
  /z                ->
                      sind. (Ermöglicht es, den Code schlank zu halten)*
  /z                -> Short-Cut Optimierung.


* diese Compilerschalter können dem Entwickler sehr viel Arbeit abnehmen. Bei sauber programmiertem Code, sollten diese Schalter keine Meldungen erzeugen. Dies hat den Vorteil sehr schnell Schreibfehler usw. zu entdecken, bevor das Programm an den Endanwender ausgeliefert wird und dort evtl. für Probleme sorgt. Deshalb kann nur wärmstens empfohlen werden, diese Schalter einzusetzen.
* diese Compilerschalter können dem Entwickler sehr viel Arbeit abnehmen. Bei sauber programmiertem Code, sollten diese Schalter keine Meldungen erzeugen. Dies hat den Vorteil sehr schnell Schreibfehler usw. zu entdecken, bevor das Programm an den Endanwender ausgeliefert wird und dort evtl. für Probleme sorgt. Deshalb kann nur wärmstens empfohlen werden, diese Schalter einzusetzen.
----
----
== Detaillierte Erklärung ==
=== /z Short-Cut Optimierung ===
Die Short-Cut Optimierung führt dazu, dass verknüpfte Abfragen nur so lange ausgeführt werden, bis klar ist, dass die Bedingung erfüllt oder nicht erfüllt ist.
WHILE (cArg1 > cArg2) .OR. (cArg3 > cArg4)
    // tue irgendetwas
END
Wenn cArg1 > cArg2 ist, beendet der Schalter /z die weitere Prüfung, da aufgrund der .OR.-Bedingung die Schleife weiter ausgeführt wird, auch wenn der zweite Vergleich cArg3 > cArg4 falsch wäre.
nArg1 := 0
nArg2 := 5
WHILE nArg1++ < 5 .OR. nArg2-- > 0
    // tue irgendetwas
END
Mit dem Auswerten der Ausdrücke wird gleichzeitig die betreffende Variable verändert. Es ergibt sich folgendes Verhalten, abhängig von der Short-Cut Optimierung:
{| class="wikitable"
|-
! Durchlauf !! nArg1 !! nArg2 !! nArg1 !! nArg2
|-
|      1    ||    1 ||    5 ||    1  ||    4
|-
|      2    ||    2 ||    5 ||    2  ||    3
|-
|      3    ||    3 ||    5 ||    3  ||    2
|-
|      4    ||    4 ||    5 ||    4  ||    1
|-
|      5    ||    5 ||    5 ||    5  ||    0
|-
|}
Die ersten Spaltengruppe nArg1/nArg2 bezieht sich auf aktivierte Short-Cut Optimierung, die zweite Spaltengruppe nArg1/nArg2 bezieht sich auf de-aktiviert Short-Cut Optimierung.
Ist die Short-Cut Optimierung aktiv, wird nach Ausführen der ersten Abfrage festgestellt, dass der Vergleich WAHR ist, also wird die zweite Abfrage nicht ausgewertet, und damit entfällt die Veränderung der Variablen nArg2.
Ist die Short-Cut Optimierung nicht aktiv, werden beide Abfragen ausgeführt und beide Variablen in jedem Durchlauf verändert.

Version vom 17. Oktober 2013, 14:48 Uhr

XPP ist der Compiler von Alaska Software Inc.

Die Compiler Schalter

/?                -> zeigt eine Information über die Compilerschalter und die installierte Xbase++
                     Version am Bildschirm an. Kann nicht mit anderen Schaltern
                     kombiniert werden.
/a                -> hiermit werden alle mit PRIVATE, PUBLIC oder PARAMETERS
                     spezifizierten Variablen als MEMVAR deklariert
/b                -> hiermit werden Debug Informationen eingebunden um im Debugger XPPdbg,
                     oder in der VX ablaufende Programme genauer untersuchen zu können.
/coff             ->
/com              ->
/d<id>[=<val>]    ->
/dll[:DYNAMIC]    ->
/err:<count>      ->
/es               ->
/ga               ->
/go               ->
i<path>           ->
/l                -> 
/link[:"options"] ->
/m                ->
/n                ->
/nod              ->
/o<name>          ->
/omf              ->
/p                ->
/pptrace          ->
/profile          ->
/q                ->
/r<libname>       ->
/s                -> es wird nur die Programmsyntax geprüft, aber keine OBJ Datei erzeugt.
/u[<name>]        ->
/v                ->
/w                -> es werden Warnungen angezeigt, wenn der Compiler auf nicht deklarierte
                     Variablen, oder Feldvariablen ohne Aliasbezeichnungen stößt*
/wi               -> es werden Warnungen angezeigt, wenn der Compiler auf nicht initialisierte
                     Variablen stößt, die aber eigentlich einen Wert haben müßten*
/wl               -> es werden Warnungen angezeigt, wenn der Compiler auf nichtlexikalische 
                     Variablen stößt.*
/wn               ->
/w                ->
/wu               -> es werden Warnungen angezeigt, wenn der Compiler auf nicht benutzte
                     lexikalische Variablen stößt, die deklariert wurden, aber nicht in Benutzung
                     sind. (Ermöglicht es, den Code schlank zu halten)*
/z                -> Short-Cut Optimierung.
  • diese Compilerschalter können dem Entwickler sehr viel Arbeit abnehmen. Bei sauber programmiertem Code, sollten diese Schalter keine Meldungen erzeugen. Dies hat den Vorteil sehr schnell Schreibfehler usw. zu entdecken, bevor das Programm an den Endanwender ausgeliefert wird und dort evtl. für Probleme sorgt. Deshalb kann nur wärmstens empfohlen werden, diese Schalter einzusetzen.

Detaillierte Erklärung

/z Short-Cut Optimierung

Die Short-Cut Optimierung führt dazu, dass verknüpfte Abfragen nur so lange ausgeführt werden, bis klar ist, dass die Bedingung erfüllt oder nicht erfüllt ist.

WHILE (cArg1 > cArg2) .OR. (cArg3 > cArg4)
   // tue irgendetwas
END

Wenn cArg1 > cArg2 ist, beendet der Schalter /z die weitere Prüfung, da aufgrund der .OR.-Bedingung die Schleife weiter ausgeführt wird, auch wenn der zweite Vergleich cArg3 > cArg4 falsch wäre.

nArg1 := 0
nArg2 := 5
WHILE nArg1++ < 5 .OR. nArg2-- > 0
   // tue irgendetwas
END

Mit dem Auswerten der Ausdrücke wird gleichzeitig die betreffende Variable verändert. Es ergibt sich folgendes Verhalten, abhängig von der Short-Cut Optimierung:

Durchlauf nArg1 nArg2 nArg1 nArg2
1 1 5 1 4
2 2 5 2 3
3 3 5 3 2
4 4 5 4 1
5 5 5 5 0

Die ersten Spaltengruppe nArg1/nArg2 bezieht sich auf aktivierte Short-Cut Optimierung, die zweite Spaltengruppe nArg1/nArg2 bezieht sich auf de-aktiviert Short-Cut Optimierung.

Ist die Short-Cut Optimierung aktiv, wird nach Ausführen der ersten Abfrage festgestellt, dass der Vergleich WAHR ist, also wird die zweite Abfrage nicht ausgewertet, und damit entfällt die Veränderung der Variablen nArg2.

Ist die Short-Cut Optimierung nicht aktiv, werden beide Abfragen ausgeführt und beide Variablen in jedem Durchlauf verändert.