uso di wmain
Sezione specifica Microsoft
Nel modello di programmazione Unicode è possibile definire una versione a caratteri wide della main
funzione. Usare wmain
invece di se si vuole scrivere codice portabile conforme al modello di main
programmazione Unicode.
Come main
, diverse restrizioni si applicano alla wmain
funzione che non si applica ad altre funzioni C. La funzione wmain
:
- Non è possibile dichiarare come
inline
. - Non è possibile dichiarare come
static
. - Non può avere il suo indirizzo preso.
- Non è possibile chiamare dal programma.
Firma della wmain
funzione
La wmain
funzione non ha una dichiarazione, perché è incorporata nel linguaggio. In caso affermativo, la sintassi della dichiarazione per wmain
sarà simile alla seguente:
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
La wmain
funzione viene dichiarata in modo implicito usando una di queste firme. È possibile usare una di queste firme quando si definisce la wmain
funzione. È quindi possibile passare al programma argomenti a caratteri estesi e, se lo si desidera, un puntatore di ambiente a caratteri estesi. Il compilatore Microsoft consente inoltre di wmain
avere un tipo restituito quando void
non viene restituito alcun valore. I argv
parametri e envp
da wmain
possono essere definiti anche come tipo wchar_t**
. Per altre informazioni sugli argomenti, vedere Descrizione dell'argomento.
Ambiente envp
Se il programma usa una main
funzione, l'ambiente con caratteri multibyte viene creato dalla libreria di runtime all'avvio del programma. Una copia a caratteri estesi dell'ambiente viene creata solo quando è necessario, ad esempio tramite una chiamata alla funzione _wgetenv
o _wputenv
. Alla prima chiamata a _wputenv
o alla prima chiamata a _wgetenv
, se esiste già un ambiente MBCS, verrà creato un ambiente corrispondente per una stringa a caratteri "wide". All'ambiente farà quindi riferimento la variabile globale _wenviron
, una versione a caratteri "wide" della variabile globale _environ
. A questo punto esistono allo stesso tempo due copie dell'ambiente, MBCS e Unicode, che vengono conservate dal sistema operativo per tutta la durata del programma.
Analogamente, se il programma usa una wmain
funzione, viene creato un ambiente a caratteri wide all'avvio del programma e punta alla _wenviron
variabile globale. Alla prima chiamata a _putenv
o getenv
viene creato un ambiente MBCS (ASCII) a cui fa riferimento la variabile globale _environ
.
Per altre informazioni sull'ambiente MBCS, vedere Internazionalizzazione.
Fine sezione specifica Microsoft