0251 / 590 837 15
info@a-coding-project.de

Microsoft: Compiler

Microsofts Browser besitzt ein Feature welches es erlaubt bestimmte Abschnitte des Quellcodes ein- bzw. auszuschließen. Dieses Feature, die bedingte Kompilierung, ist ab dem Internet Explorer 4.0 verfügbar. Dabei handelt es sich nicht wirklich um eine Kompilierung, sondern eher um ein umsteuern des Interpreters.

JScript 4.0 Anweisungen

Mit Hilfe der bedingten Kompilierung lässt sich der Interpreter (oder eben Compiler - wie man ihn auch nennen mag) steuern. So kann beispielsweise zuerst die Browser-Version abgefragt werden, bevor ein gewisser Abschnit zur Ausführung frei gegeben wird. Eine Anweisung beginnt immer mit einem @-Zeichen. Diesem folgt dann der Name der Anweisung. Dabei ist darauf zu achten, dass möglichst alle Kompiler-Anweisungen innerhalb von Kommentaren stehen, damit diese nicht von anderen bzw. früheren Browsern falsch interpretiert werden können. Bei Kommentaren ist zu beachten, dass die Anweisungen gleich nach dem öffnenden Kommentarzeichen (/*) anschließen (also /*@... statt /* @...). Ein weiteres @-Zeichen sollte folgen, ein Kommentar beendet wird (also @*/). Beispiel:

/*@cc_on @*/
...
/*@Anweisung
  ...
@*/ 

JScript 4.0 @cc_on

Die @cc_on-Anweisung schaltet die bedingte Kompilierung ein. Sie sollte vor allen anderen Kompiler-Anweisungen stehen. Beispiel:

/*@cc_on @*/ 

JScript 4.0 @if

Die @if-Anweisung funktioniert im Grunde wie eine normale JavaScript -Abfrage. Nach dieser Anweisung sollte innerhalb von runden Klammern ( ( und ) ) eine Bedingung folgen. Wird diese Bedingung mit true (also wahr) ausgewertet, so wird der danach folgende Code geparsende (durch den Kompiler untersucht/vorbereitet). Dies gilt bis zum nächsten Auftreten eines @end-Aufrufes Die bei der Bedinung auszulösenden Anweisungen können dabei auch innerhalb eines Kommentares stehen, sodass sie von anderen Browsern nicht beachtet werden. Beispiel:

/*@cc_on @*/

/*@if (@_win16) @*/
alert('Sie benutzen kein Windows 95, NT oder höher!');
/*@end @*/

/*@if (@_win32) 
  alert('Sie benutzen Windows 95, NT oder höher!');
  @end
@*/ 

Das Resultat ist folgendes: Bei einem Windows 32 System (z.B. Win95, 98, NT ...) ist die Variable @_win16 = false, der folgende Code wird also nicht ausgeführt. Die Variable @_win32 ist jedoch true und der folgende Code wird ausgeführt.

JScript 4.0 @elif

Durch die @elif-Anweisung wird eine Zusätzliche Bedingung angeschlossen, wenn eine vorausgehende Bedingung mit false ausgewertet wurde. Man kann sie mit dem Syntax else if(){} vergleichen. Die Notation ist ebenso wie bei @if (es wird eine Klammer mit einer Bedingung angeschlossen). Beispiel:

/*@cc_on 
  if (@_win16)
  alert('Sie benutzen kein Windows 95, NT oder höher!');
  @elif (@_win32)
  alert('Sie benutzen Windows 95, NT oder höher!');
  @end
@*/ 

Das Beispiel ist mit dem von @if zu vergleichen. Beachten Sie bitte dabei, dass vor der @elif-Anweisung keine @end-Anweisung stehen darf, da die Bedinungsanweisungen an diesem Punkt noch nicht beendet sind.

JScript 4.0 @else

Die @else-Anweisung kommt einer normalen else-Anweisung gleich. Dabei wird der nachfolgende Code ausgeführt wenn zuvor eine @if- oder/und @elif-Abfrage mit false ausgewertet wurde/n. Beispiel:

/*@cc_on 
  @if (@_win16) 
  alert('Sie benutzen kein Windows 95, NT oder höher!');
  @elif (@_win32) 
  alert('Sie benutzen Windows 95, NT oder höher!');
  @else 
  alert('Sie benutzen kein Windows-System!');
  @end
@*/ 

Das Beispiel erweitert das Beispiel von @elif um einen zusätzlichen Weg. Wurden dabei beide Bedingungen mit false ausgewertet, wird die Anweisung(en) nach @else ausgeführt.

JScript 4.0 @end

Die @end-Anweisung beendet eine Bedinungsanweisung oder Bedinungsanweisungen. Beispiel siehe @if-, @elif- und @else-Anweisungen.

JScript 4.0 @set

Die @set-Anweisung erstellt eine Variable die bei der bedingten Kompilierung verwendet werden kann. Die Variable muss dabei ein @-Zeichen als Namensbeginn aufweisen und wird hinter der @set-Anweisung definiert. Mit Hilfe des Zuweisungsoperators (=) kann der Variablen ein Wert gegeben werden. Beispiel:

/*@cc_on
@set @meineVariable = 4
@if (@_jscript_version < @meineVariable)
alert('JScript unter Version 4');
@else
alert('JScript ab Version 4');
@end @*/ 

JScript 4.0 Kompilervariablen

Zusätzlich stellt der Kompiler eine Reihe von eigenen Variablen auf, die die Anpassung ermöglichen. Zu diesen gehören:

  • @_alpha - true/NaN für die Verwendung eines DEC Alpha-Prozessors.
  • @_jscript - immer true.
  • @_jscript_build - gibt die Build-Nummer des JScript-Modules.
  • @_jscript_version - gibt die Versions-Nummer des JScript-Modules.
  • @_PowerPC - true/NaN für die Verwendung eines Motorola PowerPC-Prozessor.
  • @_mac - true/NaN für die Verwendung eines Macintosh-Systems.
  • @_mc680x0 - true/NaN für die Verwendung eines Motorola 680x0-Prozessors.
  • @_win16 - true/NaN für die Verwendung eines Win16-System.
  • @_win32 - true/NaN für die Verwendung eines Win32-System.
  • @_x86 - true/NaN für die Verwendung eines Intel-Prozessors.