Maison  >  Article  >  développement back-end  >  Pourquoi cstdio importe-t-il des symboles dans l'espace de noms std alors que stdio.h les importe dans l'espace de noms global ?

Pourquoi cstdio importe-t-il des symboles dans l'espace de noms std alors que stdio.h les importe dans l'espace de noms global ?

DDD
DDDoriginal
2024-10-31 02:01:29583parcourir

Why does cstdio import symbols into the std namespace while stdio.h imports them into the global namespace?

Espace de noms cstdio stdio.h

En C , la bibliothèque C standard est disponible dans l'espace de noms std. Cependant, une idée fausse courante survient lors de l'utilisation d'en-têtes tels que cstdio et stdio.h.

L'inclusion de cstdio importe les noms de symboles dans l'espace de noms std. Cependant, l'inclusion de stdio.h importe les noms de symboles dans l'espace de noms global. En effet, les en-têtes C, y compris cstdio, se comportent comme si les noms placés dans l'espace de noms std étaient également placés dans l'espace de noms global.

Exemple :

Le code suivant utilise la fonction std::printf, qui est définie dans l'espace de noms std :

<code class="cpp">std::printf("hello world"); // Correct</code>

En revanche, le code suivant utilise la fonction printf, qui est définie dans l'espace de noms global :

<code class="cpp">printf("hello world"); // Correct</code>

Notez que l'inclusion de cstdio peut également rendre la fonction printf disponible dans l'espace de noms std, mais cela n'est pas garanti. Pour garantir la disponibilité dans les deux espaces de noms, il est recommandé d'utiliser l'en-tête correspondant à l'espace de noms souhaité :

  • cstdio - Noms définis dans l'espace de noms std
  • stdio.h - Noms définis dans global espace de noms

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