Heim > Artikel > Backend-Entwicklung > Warum importiert cstdio Symbole in den std-Namespace, während stdio.h sie in den globalen Namespace importiert?
cstdio stdio.h Namespace
In C ist die Standard-C-Bibliothek im std-Namespace verfügbar. Bei der Verwendung von Headern wie cstdio und stdio.h entsteht jedoch ein häufiges Missverständnis.
Das Einbeziehen von cstdio importiert die Symbolnamen in den std-Namespace. Durch die Einbindung von stdio.h werden jedoch die Symbolnamen in den globalen Namespace importiert. Dies liegt daran, dass C-Header, einschließlich cstdio, sich so verhalten, als ob die im std-Namespace platzierten Namen auch im globalen Namespace platziert würden.
Beispiel:
Der folgende Code verwendet die Funktion std::printf, die im std-Namespace definiert ist:
<code class="cpp">std::printf("hello world"); // Correct</code>
Im Gegensatz dazu verwendet der folgende Code die Funktion printf, die im globalen Namespace definiert ist:
<code class="cpp">printf("hello world"); // Correct</code>
Beachten Sie, dass durch die Einbeziehung von cstdio möglicherweise auch die printf-Funktion im std-Namespace verfügbar gemacht wird, dies ist jedoch nicht garantiert. Um die Verfügbarkeit in beiden Namespaces sicherzustellen, wird empfohlen, den Header zu verwenden, der dem gewünschten Namespace entspricht:
Das obige ist der detaillierte Inhalt vonWarum importiert cstdio Symbole in den std-Namespace, während stdio.h sie in den globalen Namespace importiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!