#pragma option

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Pragma-Direktiven (Übersicht) - Index

Syntax (siehe Pseudogrammatik)

#pragma option OPT [ OPT ... ]
#pragma option push OPT [ OPT ... ]
#pragma option pop
#pragma nopushoptwarn

Beschreibung

Benutzen Sie #pragma option, wenn Sie Kommandozeilenoptionen in Ihren Quelltext aufnehmen wollen. #pragma option kann auch mit den Argumenten push und pop verwendet werden.

#pragma option OPT [ OPT ... ]

OPT kann jede Kommandozeilenoption sein (mit Ausnahme der im nächsten Absatz angegebenen). In einer Direktive kann eine beliebige Anzahl von Optionen kombiniert werden. Die folgenden Beispiele sind beide zulässig:

#pragma option -C
#pragma option -C -A

Alle umschaltbaren Optionen (wie etwa -a oder -K) können wie in der Kommandozeile ein- und ausgeschaltet werden. Bei diesen umschaltbaren Optionen können Sie auch einen Punkt hinter die Option setzen, dadurch wird sie auf den durch die Kommandozeile, die Konfigurationsdatei oder das Optionen-Menü eingestellten Wert gesetzt. Dies ermöglicht es Ihnen, eine Option vorübergehend zu ändern und danach wieder die alte Einstellung zu aktivieren, ohne sich merken zu müssen (oder überhaupt nur wissen zu müssen), welche die alte Einstellung war.

Folgende Optionen dürfen nicht bei #pragma option verwendet werden:

B
c
dname
Dname=string
efilename
E
Fx
h
Ifilename
lexset
M
o
P
Q
S
T
Uname
V
X
Y

Sie können #pragma-, #include-, #define- und einige #if-Direktiven in folgenden Fällen verwenden:

  • Vor der Verwendung irgendeines Makronamens, der mit zwei Unterstrichen beginnt (und deshalb möglicherweise für ein vordefiniertes Makro steht), in einer #if-, #ifdef-, #ifndef- oder #elif-Direktive.
  • Vor dem Auftreten des ersten echten Symbols (also der ersten C- oder C++Deklaration).

Bestimmte Kommandozeilenoptionen können nur vor den eben erwähnten Ereignissen in der Direktive #pragma option stehen. Dazu gehören:

Efilename
f
i#
m*
npath
ofilename
U
W
z


Andere Optionen können an jeder Stelle geändert werden. Die folgenden Optionen beeinflussen den Compiler nur dann, wenn sie zwischen Funktionen oder Objektdeklarationen geändert werden:

1
h
r
2
k
rd
A
N
v
Ff
O
y
G
p
Z


Die folgenden Optionen können jederzeit geändert werden und wirken sich sofort aus:

A
gn
zE
b
jn
zF
C
K
zH
d
wxxx


Außerdem kann ihnen auch ein Punkt (.) nachgestellt werden, um sie auf ihre in der Kommandozeile vorgegebene Einstellung zurückzusetzen.

#pragma option push OPT [ OPT ... ] und #pragma option pop

Die Direktive #pragma option kann auch mit den Argumenten push oder pop verwendet werden, um Compiler-Direktiven einfach zu verändern.

Mit #pragma option push können alle (oder einige) Optionen gespeichert werden, bevor Dateien einbezogen werden, die viele Compiler-Optionen und -Warnungen potentiell ändern könnten, und dann kann mit der einzelnen Anweisung #pragma option pop zurück zum vorherigen Status gewechselt werden. Ein Beispiel:

#pragma option push
#include <theworld.h>
#pragma option pop
#include "mystuff.h"

Die Direktive #pragma option push stellt alle Einstellungen der Compiler-Optionen und -Warnungen auf einen Stack und arbeitet dann alle Optionen (sofern vorhanden) ab. Das folgende Beispiel zeigt wie #pragma option push mit oder ohne Optionen eingesetzt werden kann:

#pragma option push -C -A
#pragma option push

Die Direktive #pragma option pop ändert Compiler-Optionen und -Warnungen, indem die letzte Gruppe mit Optionen und Warnungen aus dem Stack entfernt wird. Wenn der Stack leer ist, wird die Warnung "Pragma Option pop ohne zugehörige Option push" ausgegeben und nichts ausgeführt.

Der folgende Code erzeugt eine Warnungmeldung für einen leeren Stack:

#pragma option push
#pragma option pop
#pragma option pop      /* Warnung */

Obwohl es nicht zu empfehlen ist, können Sie diese Warnung mit der folgenden Direktive ausschalten: #pragma warn -nop.

Wenn Sie versuchen, nach pop andere Optionen anzugeben, erhalten Sie die Fehlermeldung "Nach pragma Option pop keine weitere Option zulässig". Folgender Code erzeugt beispielsweise einen Fehler:

#pragma option pop -C/* FEHLER */

Wenn der Stack mit den push-Optionen am Ende der Datei nicht dem vom Anfang der Datei entspricht, erhalten Sie die Warnung: "Vorherige Optionen und Warnungen werden nicht wiederhergestellt." Diese Warnung können Sie mit der Direktive #pragma nopushoptwarn ausschalten.