Maison > développement back-end > C++ > Les fonctions et en-têtes C doivent-ils être utilisés à partir de l'espace de noms `std::` ou de l'espace de noms global en C ?

Les fonctions et en-têtes C doivent-ils être utilisés à partir de l'espace de noms `std::` ou de l'espace de noms global en C ?

Susan Sarandon
Libérer: 2024-11-14 19:00:02
original
910 Les gens l'ont consulté

Should C functions and headers be used from the `std::` namespace or the global namespace in C++?

Using C Headers in C++: Namespaces or Global Scope?

In C++, one can access C functions and headers by modifying the header file names (e.g., stdio.h to cstdio, stdlib.h to cstdlib). However, it raises the question of whether to use functions from the std:: namespace or the global namespace for these headers in C++ code.

Namespace vs. Global Scope in C++

According to the C++11 Standard, every C header with a ".h" extension behaves as if its names are placed within both the global namespace and the namespace std. It remains unspecified whether these names are first declared in the std:: namespace and injected into the global namespace or vice versa.

Preferred Approach

To ensure compatibility with future C++ revisions and remove potential ambiguities, it is recommended to use the "cname" headers and declare and define functions within the std:: namespace. Using the old ".h" headers is deprecated and has been identified for removal in upcoming revisions.

Example Code

Prefer the following code snippet:

#include <cstdio>

int main() {
    std::printf("Hello world\n");
}
Copier après la connexion

over:

#include <stdio.h>

int main() {
    printf("Hello world\n");
}
Copier après la connexion

Conclusion

While it's possible to use both std:: and the global namespace for C functions and headers in C++, the preferred approach is to include the "cname" headers and use the declarations and definitions from the std:: namespace for consistency with future C++ revisions and to avoid potential issues.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal