Après avoir vu What does the following macro do? Je dois poser ma propre question: pourquoi tant d'en-têtes d'applications définissent-elles offsetof
elles-mêmes? Y at-il une raison pour laquelle <stddef.h>
ne doit pas être invoqué?Pourquoi les gens définissent-ils leur propre offset?
Répondre
Je ne pense pas que c'est qu'ils se méfient de la norme offsetof
- au moins de ce que j'ai vu, c'est généralement qu'ils ne sont tout simplement pas au courant.
Y at-il une raison pour laquelle on ne peut pas compter sur?
Je connais l'une des raisons. GCC génère un avertissement lorsque offsetof() standard est utilisé sur les champs de classes C++. Cela amène certaines personnes à déployer leur propre version qui ne déclenche pas l'avertissement.
Terrible idée. Les avertissements sont là pour une raison ... C'est comme dire "Oh, un comportement indéfini? Je vous crache dessus ... au fait, pourquoi mon programme n'est-il pas portable et s'écrase?" – GManNickG
Ce qui est stupide, parce que cet avertissement est là pour de bonnes raisons. –
Oui. Spécialement sur l'un des projets que j'ai travaillé, ils mélangeaient le polymorphisme/héritage multiple et le offsetof() et il y avait de la corruption de mémoire à cause de ça et il m'a fallu une éternité pour expliquer pourquoi ça ne marchait pas et pourquoi il y avait un avertissement pour ça. – Dummy00001
Ou peut-être que c'est un code hérité d'un compilateur C qui n'était pas conforme ANSI et n'avait pas offsetof
?
Je le croirais sauf qu'il semble que tout ce code aurait dû disparaître maintenant. Peut-être que les gens les ont mis en relation depuis le début parce qu'ils ne connaissent pas stddef.h, comme le suggère Jerry. – zwol
@ Zack: Je crois facilement que les gens ont été la cargaison. Il y a beaucoup d'idées fausses selon lesquelles 'offsetof' n'était pas standardisé avant C99 aussi. – jamesdlin
- 1. trier les gens par leur rôle dans une entreprise
- 2. Rendre les utilisateurs enregistrés ont leur propre URL
- 3. Mettre des CAPTCHA sur leur propre page?
- 4. Offset Timezone offset
- 5. Pourquoi les gens appellent le jQuery $ alias un 'factory'?
- 6. Pourquoi les gens utilisent ATL pour la programmation COM?
- 7. Pourquoi les gens utilisent _? comme un suffixe d'identifiant?
- 8. Comment limiter le vote des utilisateurs sur leur propre modèle
- 9. JavaFX - que pensent les gens?
- 10. OK pour mettre mes interfaces publiques dans leur propre paquet
- 11. onglets dans leur propre processus avec C# et WinForms
- 12. php + rss: Pourquoi pas l'image leur apparition?
- 13. Undefined offset
- 14. PHP Unset + Undefined Offset
- 15. Pourquoi les gens utilisent-ils les enums en C++ comme constantes alors qu'ils peuvent utiliser const?
- 16. Pourquoi les gens encouragent-ils toujours les J simples pour un site Web?
- 17. Pourquoi les gens n'entourent-ils pas les blocs begin/rescue autour de ActiveRecord.find dans Rails?
- 18. Comment faire pour que les contrôles utilisateur s'exécutent sur leur propre thread
- 19. Comment autoriser les sites de sous-domaines des clients d'utiliser leur propre domaine
- 20. Mercurial repo: ignorer tous les dossiers qui contiennent leur propre repo?
- 21. Ruby on rails plus élégante façon d'authentifier les utilisateurs peuvent modifier que leur propre contenu
- 22. Les objets COM sont-ils responsables de conserver leur propre module en mémoire?
- 23. Est-ce une mauvaise idée de laisser les utilisateurs ajouter leur propre feuille de style?
- 24. Les rails AJAX doivent-ils être regroupés dans leur propre contrôleur séparé?
- 25. Les fonctions déclenchées par un scénario de récupération QTP doivent résider dans leur propre bibliothèque?
- 26. Tokensizer offset inversé
- 27. symfony: essayer d'utiliser ma propre méthode pour afficher une liste dans le backend. Undefined offset avis
- 28. iPhone UI Offset Numéro
- 29. élément Calcul offset pour
- 30. Wunderground et UTC Offset
C'est un peu triste à quel point c'est plausible. – zwol