Maison >développement back-end >C++ >Pourquoi `printf` fonctionne-t-il à la fois dans `std::printf` et `printf` lors de l'utilisation de `` en C ?

Pourquoi `printf` fonctionne-t-il à la fois dans `std::printf` et `printf` lors de l'utilisation de `` en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 05:43:30612parcourir

Why does `printf` work in both `std::printf` and `printf` when using `` in C  ?

espace de noms cstdio Stdio.h

Dans la documentation de référence C pour , il affirme que tous les éléments de la bibliothèque résident dans le fichier std espace de noms. Cependant, les expériences montrent que les appels aux fonctions std::printf et printf fonctionnent. Cela indique-t-il que les en-têtes C importent des noms de symboles dans les espaces de noms std et global ?

Réponse

Y compris importe les noms de symboles dans l'espace de noms std et potentiellement dans l'espace de noms global. En revanche, y compris importe les noms de symboles dans l'espace de noms global, les incorporant potentiellement également dans l'espace de noms std.

Ce comportement s'étend à tous les en-têtes de style C. Selon la norme C 11 (Annexe D), les en-têtes de bibliothèque standard C se comportent comme suit :

"2 Chaque en-tête C, dont chacun a un nom de la forme nom.h, 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."

Par conséquent, il reste incertain si ces noms sont initialement déclarés ou définis dans l'espace de noms std puis injectés dans l'espace de noms global via déclarations d'utilisation, ou vice versa.

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