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[]);
Microsoft a cependant introduit une extension appelée wmain(), qui remplace la deuxième signature with :
int wmain(int argc, wchar_t* argv[]);
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 :
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!