Heim  >  Artikel  >  Backend-Entwicklung  >  C-Header in C: std:: vs. Global Namespace – Welcher Ansatz ist besser?

C-Header in C: std:: vs. Global Namespace – Welcher Ansatz ist besser?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 07:27:10364Durchsuche

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

Navigieren in C-Headern in C : std:: vs. Global Namespace

Bei der Arbeit mit C-Headern in C stellt sich eine Frage bezüglich der Bevorzugter Ansatz zum Aufrufen von Funktionen: Verwendung des std::-Namespace oder des globalen Namespace. Während C die Einbeziehung von C-Headern durch Änderung des Header-Namens unterstützt (z. B. stdio.h in cstdio), bleibt die semantische Überlegung, welcher Ansatz angemessener ist, bestehen.

Der C 11-Standard befasst sich mit diesem Problem in Abschnitt D .5 [depr.c.headers], die besagt, dass sich jeder C-Header (mit dem Namensformat name.h) so verhält, als ob jeder durch den entsprechenden cname-Header deklarierte Name im globalen platziert wäre Namensraum. Es bleibt jedoch unklar, ob diese Namen zuerst im std-Namespace deklariert oder definiert und dann in den globalen Namespace eingefügt werden.

Zum Beispiel ist die Der Header stellt sicher Deklarationen und Definitionen innerhalb des std-Namespace bereit, während der Der Header stellt sie sicher im globalen Namespace bereit.

Basierend auf diesen Informationen wird empfohlen, die CNAME-Header einzuschließen und Deklarationen und Definitionen aus dem Standard-Namespace zu verwenden. Dies stellt die Kompatibilität mit zukünftigen Revisionen sicher und folgt dem im Standard dargelegten bevorzugten Ansatz:

#include <cstdio>

int main() {
    std::printf("Hello world\n");
}

Während es technisch akzeptabel ist, das Header mit Deklarationen und Definitionen aus dem globalen Namespace, diese Vorgehensweise ist veraltet und wird möglicherweise in Zukunft entfernt.

Das obige ist der detaillierte Inhalt vonC-Header in C: std:: vs. Global Namespace – Welcher Ansatz ist besser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn