Heim >Backend-Entwicklung >C++ >Warum importiert cstdio Symbole in den std-Namespace, während stdio.h sie in den globalen Namespace importiert?

Warum importiert cstdio Symbole in den std-Namespace, während stdio.h sie in den globalen Namespace importiert?

DDD
DDDOriginal
2024-10-31 02:01:29668Durchsuche

Why does cstdio import symbols into the std namespace while stdio.h imports them into the global namespace?

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:

  • cstdio – Im Standard-Namespace definierte Namen
  • stdio.h – Im Global definierte Namen Namespace

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!

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