Maison  >  Article  >  développement back-end  >  Pourquoi `printf` fonctionne-t-il sans `std::` en C lorsque `cstdio` est inclus ?

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

DDD
DDDoriginal
2024-10-26 01:13:02627parcourir

 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!

Déclaration:
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