Xpp

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen

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.