Verwenden von wmain

Microsoft-spezifisch

Im Unicode-Programmiermodell können Sie eine Breitzeichenversion der main-Funktion definieren. Verwenden Sie wmain anstelle von main, wenn Sie portablen Code schreiben möchten, der dem Unicode-Programmiermodell entspricht.

Wie für main gelten für die wmain-Funktion einige Einschränkungen, die für andere C-Funktionen nicht gelten. Mit der Funktion wmain werden folgende Aktionen ausgeführt:

  • Sie kann nicht als inline deklariert werden.
  • Sie kann nicht als static deklariert werden.
  • Ihre Adresse kann nicht übernommen werden.
  • Sie kann nicht aus Ihrem Programm aufgerufen werden.

Die Signatur der wmain-Funktion

Die wmain-Funktion muss nicht deklariert werden, da sie in die Sprache integriert ist. Wäre eine Deklaration erforderlich, würde die Deklarationssyntax für wmain wie folgt aussehen:

int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );

Die wmain-Funktion wird implizit mithilfe einer dieser Signaturen deklariert. Sie können jede dieser Signaturen verwenden, wenn Sie Ihre wmain-Funktion definieren. Sie können anschließend Breitzeichen-Argumente und optional einen Breitzeichen-Umgebungszeiger übergeben, der auf das Programm verweist. Der Microsoft-Compiler lässt außerdem zu, dass wmain den Rückgabetyp void hat, wenn kein Wert zurückgegeben wird. Die Parameter argv undenvp von wmain können auch als Typ wchar_t**definiert werden. Weitere Informationen zu den Argumenten finden Sie unter Argumentbeschreibung.

Die envp-Umgebung

Wenn in einem Programm eine main-Funktion verwendet wird, wird die Multibyte-Zeichenumgebung von der Laufzeitbibliothek beim Programmstart erstellt. Eine Breitzeichen-Kopie der Umgebung wird nur bei Bedarf erstellt (z. B. durch Aufruf der _wgetenv-Funktion bzw. der _wputenv-Funktion). Wenn bereits eine MBCS-Umgebung vorhanden ist, wird beim ersten Aufruf von _wputenv oder beim ersten Aufruf von _wgetenv eine entsprechende Breitzeichen-Zeichenfolgenumgebung erstellt. Auf diese Umgebung zeigt dann die globale Variable _wenviron, die eine Breitzeichenversion der globalen Variablen _environ ist. Zu diesem Zeitpunkt sind zwei Kopien der Umgebung (MBCS und Unicode) gleichzeitig vorhanden und werden während der Lebensdauer des Programms vom Betriebssystem verwaltet.

Wenn ein Programm eine wmain-Funktion verwendet, wird beim Programmstart eine Breitzeichenumgebung erstellt, auf die die globale Variable _wenviron verweist. Eine MBCS-Umgebung (ASCII) wird beim ersten Aufruf von _putenv oder getenv erstellt. Anschließend verweist die globale _environ-Variable auf diese Umgebung.

Weitere Informationen zur MBCS-Umgebung finden Sie unter Internationalisierung.

Ende Microsoft-spezifisch

Siehe auch

main-Funktion und Programmausführung