Maison  >  Article  >  développement back-end  >  En-têtes C en C : std :: vs Global Namespace – Quelle approche est la meilleure ?

En-têtes C en C : std :: vs Global Namespace – Quelle approche est la meilleure ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-23 07:27:10375parcourir

C Headers in C  :  std:: vs. Global Namespace - Which Approach is Better?

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 l'en-tête fournit assurément des déclarations et des définitions dans l'espace de noms std, tandis que l'en-tête header les fournit assurément dans l'espace de noms global.

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 en-têtes avec des déclarations et des définitions de l'espace de noms global, cette pratique est obsolète et pourrait être supprimée à l'avenir.

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