Espace de noms cstdio stdio.h
La référence C pour cstdio indique que "Chaque élément de la bibliothèque est défini dans l'espace de noms std." Cependant, vous avez constaté que std::printf et printf fonctionnent, ce qui soulève la question de savoir si les en-têtes C incluent des symboles dans les deux espaces de noms.
La réponse est plus nuancée.
Y compris cstdio
L'inclusion de cstdio importe des symboles dans l'espace de noms std et éventuellement dans l'espace de noms global. En effet, cstdio inclut stdio.h, qui est un en-tête de style C.
Incluant stdio.h
Incluant stdio.h importe des symboles dans l'espace de noms global et éventuellement dans l'espace de noms std. En effet, stdio.h est un en-tête de style C.
Fonctionnalités de compatibilité
L'utilisation d'en-têtes de style C en C est une fonctionnalité de compatibilité. La norme C 11 spécifie que pour des raisons de compatibilité avec la bibliothèque standard C, la bibliothèque standard C fournit 25 en-têtes C, dont cstdio et stdio.h.
La norme indique en outre que chaque en-tête C « se comporte comme si chaque nom placé dans l'espace de noms de la bibliothèque standard par l'en-tête cname correspondant est placé dans la portée de l'espace de noms global. "
Conclusion
In En résumé, lors de l'inclusion d'en-têtes de style C dans C , les symboles peuvent être importés à la fois dans les espaces de noms std et globaux, en fonction des en-têtes spécifiques utilisés et de l'implémentation du compilateur. Cependant, il n'est pas toujours garanti que les deux espaces de noms contiendront les mêmes symboles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3