Maison > développement back-end > C++ > Quelle est la différence entre `main()` et `_tmain()` en C concernant les arguments de ligne de commande ?

Quelle est la différence entre `main()` et `_tmain()` en C concernant les arguments de ligne de commande ?

Linda Hamilton
Libérer: 2024-12-17 19:10:13
original
466 Les gens l'ont consulté

What's the Difference Between `main()` and `_tmain()` in C   Regarding Command-Line Arguments?

Quelle est la disparité entre _tmain() et main() en C ?

Lorsque vous utilisez C, vous pouvez utiliser soit main() ou _tmain() pour le programme entrée. Bien que les deux servent un objectif similaire, il existe une distinction cruciale qui modifie la façon dont ils traitent les arguments.

Comprendre main()

Selon la norme C, main est le point d'entrée désigné pour les programmes. Il adhère à l'une des deux signatures :

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

Où argc désigne le nombre d'arguments de ligne de commande et argv est un tableau de tableaux de caractères contenant les arguments.

Plongez dans _tmain( )

_tmain, quant à lui, est une extension spécifique à Microsoft qui simplifie la transition entre Unicode (UTF-16) et des jeux de caractères multioctets. Si Unicode est activé, _tmain est compilé en tant que wmain, sinon il est compilé en tant que main.

Découverte de la divergence d'argument

Le problème survient parce que votre fonction _tmain n'est pas correctement définie. Wmain est conçu pour accepter les arguments wchar_t, pas les arguments char. Étant donné que le compilateur n'applique pas cette règle pour main, un tableau de chaînes wchar_t est transmis à votre fonction principale, qui les interprète comme des chaînes de caractères.

UTF-16, le jeu de caractères utilisé dans Windows avec Unicode activé. , représente les caractères ASCII sous forme de paires d'octets : suivis de la valeur ASCII. Cependant, dans les processeurs x86 avec un ordre d'octets petit-boutiste, l'ordre est inversé. Cela signifie que dans une chaîne de caractères, la chaîne se termine par un octet nul, ce qui amène votre programme à identifier les chaînes à un octet.

Navigation dans les options de programmation

Lorsque vous vous lancez dans la programmation Windows, vous êtes confronté plusieurs choix :

  • Unicode explicite : Utiliser wmain, CreateWindowW, wchar_t, etc.
  • Désactiver explicitement Unicode : Utilisez main, CreateWindowA et char.
  • Autoriser les deux : Utilisez _tmain, CreateWindow, TCHAR ( une macro définie dans windows.h).

Conclusion

_tmain et entrée du programme d'adresse principale en C , mais _tmain est une extension Microsoft qui gère Unicode. Lorsqu'il s'agit d'arguments, _tmain nécessite wchar_t, tandis que main fonctionne avec char. Comprendre ces différences est crucial pour une exécution fluide de vos applications C.

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