Maison > développement back-end > C++ > Quelle est la différence entre `main()` et `_tmain()` dans la programmation C Windows ?

Quelle est la différence entre `main()` et `_tmain()` dans la programmation C Windows ?

Barbara Streisand
Libérer: 2024-12-17 15:55:10
original
414 Les gens l'ont consulté

What's the Difference Between `main()` and `_tmain()` in C   Windows Programming?

Différence entre _tmain() et main() en C

En C , le point d'entrée standard du programme est main(), qui accepte l'une ou l'autre de ces signatures :

int main();
int main(int argc, char* argv[]);
Copier après la connexion

Microsoft a cependant introduit une extension appelée wmain(), qui remplace la deuxième signature with :

int wmain(int argc, wchar_t* argv[]);
Copier après la connexion

Pour faciliter la transition entre Unicode (UTF-16) et leur jeu de caractères multi-octets, Microsoft a également défini _tmain() qui, lorsque Unicode est activé, est compilé en tant que wmain, et sinon en tant que main ().

Disparité entre la gestion des caractères

La disparité entre main() et _tmain() dans votre exemple provient d'une utilisation incorrecte de main(). wmain() est conçu pour accepter les arguments wchar_t, tandis que main() attend char. Étant donné que le compilateur est laxiste dans l'application du type correct pour main(), le programme interprète le tableau de chaînes wchar_t comme des chaînes de caractères.

En UTF-16, les caractères ASCII sont représentés sous la forme d'une paire d'octets, avec le Valeur ASCII suivie d'un octet nul. Étant donné que les processeurs x86 sont petits-boutistes, ces octets sont échangés. Ainsi, dans une chaîne de caractères terminée par un caractère nul, votre programme voit une série de chaînes, chacune d'une longueur d'un seul octet.

Options de programmation Windows

Quand En travaillant avec la programmation Windows, trois options principales sont disponibles :

  • Activer explicitement Unicode en appelant wmain(), en utilisant les variantes -W de l'API Windows et en utilisant wchar_t au lieu de char.
  • Désactivez explicitement Unicode en appelant main(), en utilisant les variantes -A des fonctions de l'API Windows et en utilisant char pour les chaînes.
  • Autorisez les deux en appelant _tmain (), en utilisant les variantes sans suffixe des fonctions de l'API Windows et en utilisant TCHAR au lieu de char/wchar_t.

C'est il est important de noter que ces extensions spécifiques à Microsoft ne sont pas conformes à la norme C et peuvent donc ne pas être prises en charge sur d'autres plateformes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal