Verwenden von C-Headern in C: Namespaces oder globaler Geltungsbereich?
In C kann man auf C-Funktionen und Header zugreifen, indem man die Header-Datei ändert Namen (z. B. stdio.h zu cstdio, stdlib.h zu cstdlib). Es stellt sich jedoch die Frage, ob für diese Header im C-Code Funktionen aus dem std::-Namespace oder dem globalen Namespace verwendet werden sollen.
Namespace vs. Global Scope in C
Gemäß dem C 11-Standard verhält sich jeder C-Header mit der Erweiterung „.h“ so, als ob seine Namen sowohl im globalen Namespace als auch im Namespace std platziert wären. Es bleibt unklar, ob diese Namen zuerst im std::-Namespace deklariert und in den globalen Namespace eingefügt werden oder umgekehrt.
Bevorzugter Ansatz
Um die Kompatibilität mit der Zukunft sicherzustellen Um C-Revisionen zu erstellen und potenzielle Mehrdeutigkeiten zu beseitigen, wird empfohlen, die „cname“-Header zu verwenden und Funktionen innerhalb des std::-Namespace zu deklarieren und zu definieren. Die Verwendung der alten „.h“-Header ist veraltet und soll in kommenden Revisionen entfernt werden.
Beispielcode
Bevorzugen Sie den folgenden Codeausschnitt:
#include <cstdio> int main() { std::printf("Hello world\n"); }
over:
#include <stdio.h> int main() { printf("Hello world\n"); }
Fazit
Während es möglich ist, sowohl std:: als auch den globalen Namespace für C-Funktionen und Header in C zu verwenden, Der bevorzugte Ansatz besteht darin, die „cname“-Header einzuschließen und die Deklarationen und Definitionen aus dem std::-Namespace zu verwenden, um Konsistenz mit zukünftigen C-Revisionen zu gewährleisten und potenzielle Probleme zu vermeiden.
Das obige ist der detaillierte Inhalt vonSollten C-Funktionen und Header aus dem Namespace „std::' oder dem globalen Namespace in C verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!