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

Voir aussi

Fonction main et exécution du programme