„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum funktioniert „printf“ ohne „std::“ in C++, wenn „cstdio“ enthalten ist?

Warum funktioniert „printf“ ohne „std::“ in C++, wenn „cstdio“ enthalten ist?

Veröffentlicht am 17.11.2024
Durchsuche:783

 Why Does `printf` Work Without `std::` in C   When `cstdio` is Included?

cstdio stdio.h Namespace

In der C-Referenz für cstdio heißt es: „Jedes Element der Bibliothek ist im std-Namespace definiert.“ Sie haben jedoch festgestellt, dass sowohl std::printf als auch printf funktionieren, was die Frage aufwirft, ob C-Header Symbole in beiden Namespaces enthalten.

Die Antwort ist differenzierter.

Einschließlich cstdio

Einschließlich cstdio werden Symbole in den std-Namespace und möglicherweise in den globalen Namespace importiert. Dies liegt daran, dass cstdio stdio.h enthält, einen Header im C-Stil.

Inklusive stdio.h

Inklusive stdio.h importiert Symbole in den globalen Namespace und möglicherweise in den std-Namespace. Dies liegt daran, dass stdio.h ein Header im C-Stil ist.

Kompatibilitätsfunktionen

Die Verwendung von Headern im C-Stil in C ist eine Kompatibilitätsfunktion. Der C 11-Standard legt fest, dass die C-Standardbibliothek aus Kompatibilitätsgründen mit der C-Standardbibliothek 25 C-Header bereitstellt, einschließlich cstdio und stdio.h.

Der Standard besagt außerdem, dass sich jeder C-Header „so verhält, als ob jeder Name Wird im Namensraum der Standardbibliothek platziert, indem der entsprechende C-Name-Header im globalen Namensraumbereich platziert wird können Symbole sowohl in den std- als auch den globalen Namespace importiert werden, abhängig von den spezifischen verwendeten Headern und der Implementierung des Compilers. Es ist jedoch nicht immer garantiert, dass beide Namespaces dieselben Symbole enthalten.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3