Utilisation de wmain
Section spécifique à Microsoft
Dans le modèle de programmation Unicode, vous pouvez définir une version à caractères larges de la fonction main
. Utilisez wmain
au lieu de main
si vous souhaitez écrire du code portable conforme au modèle de programmation Unicode.
Comme main
, plusieurs restrictions s’appliquent à la fonction wmain
, qui ne s’appliquent à aucune autre fonction C. La fonction wmain
:
- Ne peut pas être déclaré en tant que
inline
. - Ne peut pas être déclaré en tant que
static
. - Son adresse ne peut pas être prise.
- Ne peut pas être appelée à partir de votre programme.
Signature de la fonction wmain
La fonction wmain
n’a pas de déclaration, car elle est intégrée au langage. Si elle en avait, la syntaxe de déclaration pour wmain
ressemblerait à ceci :
int wmain( void );
int wmain( int argc, wchar_t *argv[ ] );
int wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] );
La fonction wmain
est déclarée implicitement à l’aide de l’une de ces signatures. Vous pouvez utiliser l’une de ces signatures lorsque vous définissez votre fonction wmain
. Vous pouvez ensuite passer des arguments à caractère élargi et éventuellement un pointeur d’environnement à caractère élargi au programme. Le compilateur Microsoft permet également à wmain
d’avoir un type de retour void
quand aucune valeur n’est retournée. Les paramètres argv
et envp
pour wmain
peuvent également être définis en tant que type wchar_t**
. Pour plus d’informations sur les arguments, consultez Description des arguments.
L’environnement envp
Si votre programme utilise une fonction main
, l’environnement de caractère multioctets est créé par la bibliothèque runtime au démarrage du programme. Une copie de l'environnement à caractère élargi est créée uniquement lorsqu'elle est nécessaire (par exemple, par un appel des fonctions _wgetenv
ou _wputenv
). Au premier appel à _wputenv
, ou à _wgetenv
si un environnement MBCS existe déjà, un environnement de chaîne à caractères larges correspondant est créé, puis désigné par la variable globale _wenviron
, qui est une version à caractères larges de la variable globale _environ
. À ce moment-là, deux copies de l'environnement (MBCS et Unicode) existent simultanément et sont conservées par le système d'exploitation pendant toute la vie du programme.
De même, si votre programme utilise une fonction wmain
, un environnement à caractère élargi est créé au moment du démarrage et une variable globale _wenviron
pointe vers cet environnement. Un environnement MBCS (ASCII) est créé lors du premier appel de _putenv
ou getenv
, et la variable globale _environ
pointe vers cet environnement.
Pour plus d’informations sur l’environnement MBCS, consultez Internationalisation.
FIN de la section spécifique à Microsoft