Maison > développement back-end > C++ > le corps du texte

Pourquoi `printf` fonctionne-t-il sans `std::` en C lorsque `cstdio` est inclus ?

DDD
Libérer: 2024-10-26 01:13:02
original
626 Les gens l'ont consulté

 Why Does `printf` Work Without `std::` in C   When `cstdio` is Included?

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.

Inclure stdio.h

Inclure 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 précise 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

En résumé, lors de l'inclusion des en-têtes de style C en C , les symboles peuvent être importés dans les espaces de noms std et global, 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.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!