Navigation dans les en-têtes C en C : std:: vs Global Namespace
Lorsque vous travaillez avec les en-têtes C en C, une question se pose concernant le approche préférée pour appeler des fonctions : en utilisant l'espace de noms std :: ou l'espace de noms global. Bien que C prenne en charge l'inclusion des en-têtes C en modifiant le nom de l'en-tête (par exemple, stdio.h en cstdio), la considération sémantique quant à l'approche la plus appropriée demeure.
La norme C 11 aborde ce problème dans la section D. .5 [depr.c.headers], indiquant que chaque en-tête C (avec un format de nom de name.h) se comporte comme si chaque nom déclaré par l'en-tête cname correspondant était placé dans l'espace de noms global. Cependant, il n'est pas précisé si ces noms sont déclarés ou définis d'abord dans l'espace de noms std puis injectés dans l'espace de noms global.
Par exemple, le
Sur la base de ces informations, il est recommandé d'inclure les en-têtes cname et d'utiliser les déclarations et définitions de l'espace de noms std. Cela garantit la compatibilité avec les révisions futures et suit l'approche privilégiée décrite dans la norme :
#include <cstdio> int main() { std::printf("Hello world\n"); }
Bien qu'il soit techniquement acceptable d'utiliser le
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!