Je me suis souvent demandé pourquoi C++ est allé avec le nom wchar_t
au lieu de simplement wchar
, et je n'ai jamais été capable de trouver une réponse. Les moteurs de recherche ne sont d'aucune aide car ils pensent que je pose des questions sur le type de Windows WCHAR
. Des idées?Pourquoi est-il appelé 'wchar_t' et pas simplement 'wchar'?
Répondre
C'est un héritage de C, où wchar_t
est un typedef
, et typedef
s ont ce suffixe dans la bibliothèque standard C.
Merci. Je n'avais pas réalisé que c'était à l'origine une partie de C. – Cogwheel
Mais c'est arrivé quand le C++ arrivait et que de nouvelles normes ISO étaient élaborées. –
Je sais que l'un des objectifs de conception de C++ était de rester aussi compatible avec le standard C que possible. Je peux comprendre leur décision, même si je ne peux pas dire que je suis d'accord avec cette motivation particulière. – Cogwheel
Je pense que c'était une «phase» dans la croissance de C et C++. Le besoin de nouveaux types a été ressenti mais l'ajout de nouveaux mots-clés est toujours contesté. Un code utilisait déjà wchar
, beaucoup moins de code aurait utilisé wchar_t
. Notez que size_t
et diff_t
sont de la même époque.
La bibliothèque standard C a utilisé le suffixe _t
pour la plupart des types définis dans la bibliothèque (par opposition aux types qui sont cuits dans C lui-même en tant que mots-clés).
Par exemple, il y a time_t
, wchar_t
, uint32_t
, size_t
, ptrdiff_t
, div_t
, etc.
intérêt (pour moi en tout cas) est que la norme C ne réserve pas les noms de cette forme elle-même. La norme C indique que les noms qui commencent par "str
", "mem
" et quelques autres préfixes pourraient être ajoutés à la norme à l'avenir, mais il ne fait pas de même avec les noms qui se terminent par "_t
" - sauf que les noms commençant par "int
" ou "uint
" et se terminant par "_t
" pourraient être ajoutés à <stdint.h>
dans le futur. Cependant, POSIX réserve tous les noms qui se terminent par "_t
".
- 1. Quelle est la différence entre 'WCHAR' et 'wchar_t'?
- 2. ne peut pas convertir de 'WCHAR' en 'WCHAR [260]'
- 3. Pourquoi Javascript est pas appelé
- 4. NSString à wchar_t *?
- 5. Pourquoi IExpando.AddMethod n'a pas été appelé?
- 6. Pourquoi QWidget :: paintEvent n'est pas appelé?
- 7. iPhone: pourquoi DrawRect n'est pas appelé?
- 8. Pourquoi mon TypeConverter n'est pas appelé?
- 9. Pourquoi activeesource.rb appelle simplement active_resource.rb?
- 10. SQLAlchemy - MapperExtension.before_delete pas appelé
- 11. Pourquoi le sélecteur d'arrêt d'animation n'est-il pas appelé?
- 12. Pourquoi le convertisseur n'est pas appelé lorsque la collection change?
- 13. Pourquoi l'événement form_load n'est pas appelé dans mon application Winforms?
- 14. C#, WinForms: Pourquoi OnPaintBackground n'est pas appelé lorsque j'appelle Refresh()?
- 15. Pourquoi/quand ComponentListener.componentShown() est appelé?
- 16. accessoryButtonTappedForRowWithIndexPath n'est pas appelé
- 17. GridView1_RowDeleting() n'est pas appelé?
- 18. pyinotify.ThreadedNotifier, process_ * pas appelé
- 19. calloutAccessoryControlTapped pas appelé/déclenché
- 20. moveFocus n'est pas appelé
- 21. fonction Javascript ne soit pas appelé - ASP.NET et UpdatePanel
- 22. asp: Evénement Calendar DateClicked (pas simplement SelectionChanged)
- 23. Pourquoi mon destructeur n'est jamais appelé?
- 24. PostSharp: OnMethodBoundaryAspect n'est pas appelé
- 25. C++ méthode redéfinie pas appelé
- 26. Pourquoi utiliser jsp: useBean ici mais pas simplement créer un nouvel objet? Dans
- 27. cakephp isAuthorized() n'étant pas appelé
- 28. Représentation de wchar_t et le charbon dans WinDbg
- 29. ExceptProc n'est pas appelé dans Windows
- 30. Impossible de convertir 'const wchar_t *' en '_TCHAR *'
Vous pourriez vouloir voir quand la norme ANSI a été écrite et quand MS a ajouté le wchar à leur compilateur. Il se peut que wchar_t fasse la distinction entre cela et wchar supporté par MS. J'ai peut-être tort, alors je vais le faire comme commentaire, donc je ne suis pas déprimé. :) –
J'ai l'impression que les comités standards ne se soucient pas autant de ce que MS fait que MS voudrait croire;) – Cogwheel