En C , la fonction main() sert de point d'entrée au programme, en acceptant un de deux signatures :
int main(); int main(int argc, char* argv[]);
Alternativement, Microsoft a introduit des extensions pour prendre en charge Unicode support :
int wmain(int argc, wchar_t* argv[]); int _tmain(int argc, char *argv[]);
La principale différence entre _tmain() et main() réside dans leur utilisation avec Unicode. Si Unicode est activé, _tmain() est compilé en tant que wmain(), lui permettant de gérer les chaînes wchar_t. Sinon, la valeur par défaut est main().
Dans votre exemple, l'utilisation de _tmain() avec les arguments char* entraîne un comportement inattendu car les caractères sont interprétés différemment. UTF-16, utilisé par Windows lorsque Unicode est activé, représente les caractères ASCII sous la forme d'une paire d'octets, avec la valeur ASCII suivie d'un octet nul.
En raison de la nature petit-boutiste du processeur x86, ces les octets sont échangés, ce qui donne la valeur ASCII suivie d'un zéro (un octet nul). Étant donné que les chaînes de caractères se terminent généralement par des octets nuls, votre programme interprète chaque argument comme une chaîne à un seul caractère.
Pour résoudre ce problème, vous disposez de trois options :
N'oubliez pas que ces extensions et concepts sont spécifiques à Microsoft et ne font pas partie du standard 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!