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 ?
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é :
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!