Usar wmain
Específicos de Microsoft
En el modelo de programación de Unicode, puede definir una versión con caracteres anchos de la función main
. Utilice wmain
en lugar de main
si desea escribir código portable conforme con el modelo de programación Unicode.
Al igual que con main
, a la función wmain
se le aplican varias restricciones que no se aplican a otras funciones de C. La función wmain
:
- No se puede declarar como
inline
. - No se puede declarar como
static
. - Su dirección no se puede tomar.
- No se puede llamar desde un programa de un usuario.
Signatura de la función wmain
La función wmain
no tiene una declaración porque está integrada en el lenguaje. Si la tuviera, la sintaxis de declaración de wmain
tendría este aspecto:
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
La función wmain
se declara implícitamente mediante una de estas firmas. Puede usar cualquiera de estas firmas al definir la función wmain
. A continuación, se pueden pasar al programa argumentos de caracteres anchos y, opcionalmente, un puntero a entorno de caracteres anchos. El compilador de Microsoft también permite a wmain
tener un tipo de valor devuelto de void
cuando no se devuelve ningún valor. Los parámetros argv
y envp
que wmain
también se pueden definir como de tipo wchar_t**
. Para obtener más información acerca de las descripciones de los argumentos, vea Descripción de argumentos.
El entorno de envp
Si el programa utiliza una función main
, el entorno de caracteres multibyte lo crea la biblioteca en tiempo de ejecución durante el inicio del programa. Se crea una copia de caracteres anchos del entorno sólo si es necesario (por ejemplo, por una llamada a las funciones _wgetenv
o _wputenv
). En la primera llamada a _wputenv
, o en la primera llamada a _wgetenv
si ya existe un entorno MBCS, se crea un entorno correspondiente de cadena de caracteres anchos, y la variable global _wenviron
, que es una versión con caracteres anchos de la variable global _environ
, señala a dicho entorno. En este punto, existen dos copias del entorno (MBCS y Unicode) simultáneamente que el sistema operativo mantiene a lo largo de la vida del programa.
De forma similar, si el programa utiliza una función wmain
, se crea un entorno de caracteres anchos durante el inicio del programa y la variable global _wenviron
apunta a dicho entorno. En la primera llamada a _putenv
o getenv
se crea un entorno MBCS (ASCII) y la variable global _environ
apunta a dicho entorno.
Para obtener más información sobre el entorno MBCS, vea Internacionalización.
FIN de Específicos de Microsoft