Maison >développement back-end >C++ >Pourquoi devriez-vous éviter de mélanger cout et wcout dans le même programme C ?
Mélanger des flux de sortie larges et étroits dans le même programme
Dans le "C Cookbook", il est mentionné que mélanger cout et wcout dans le même programme ne devrait pas être fait. Ce commentaire vient du fait que les standards C et C imposent que les flux aient une orientation, et une fois cette orientation définie pour un flux, il ne faut pas mélanger des opérations incompatibles avec l'orientation.
Quoi est-ce que cela signifie en pratique ?
Lorsque cout ou wcout est appelé pour la première fois, l'orientation de stdout devient définie. Dans le cas de cout, stdout devient un flux orienté octets, et dans le cas de wcout, stdout devient un flux orienté large. Selon la norme C [27.4.1] et la norme C [7.19.2], une fois l'orientation d'un flux définie, vous ne devez pas appeler une fonction qui n'est pas compatible avec l'orientation de ce flux.
Exceptions à la règle
Cependant, il est important de noter que tous les compilateurs ne suivent pas strictement cette norme. Par exemple, dans Visual C 10.0, la fonction fwide (utilisée pour définir l'orientation d'un flux) n'est pas implémentée. Par conséquent, dans Visual C, le mélange de cout et wcout est autorisé.
De même, dans les premières versions de GCC, en raison d'un bug qui a été corrigé, il était possible d'appeler cout et wcout dans le même programme en appelant std ::ios::sync_with_stdio(false); au début du programme.
Cependant, il est important de garder à l'esprit qu'il s'agit d'exceptions à la règle. En général, il n'est pas recommandé de mélanger des flux de sortie larges et étroits dans le même programme, car cela peut entraîner un comportement inattendu ou des résultats indéfinis.
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!