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
887 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!

source:php.cn
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