Rumah >pembangunan bahagian belakang >C++ >Mengapakah cstdio mengimport simbol ke dalam ruang nama std manakala stdio.h mengimportnya ke dalam ruang nama global?

Mengapakah cstdio mengimport simbol ke dalam ruang nama std manakala stdio.h mengimportnya ke dalam ruang nama global?

DDD
DDDasal
2024-10-31 02:01:29713semak imbas

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

cstdio stdio.h Namespace

Dalam C , perpustakaan C standard tersedia dalam ruang nama std. Walau bagaimanapun, salah tanggapan biasa timbul apabila menggunakan pengepala seperti cstdio dan stdio.h.

Termasuk cstdio mengimport nama simbol ke dalam ruang nama std. Walau bagaimanapun, termasuk stdio.h mengimport nama simbol ke dalam ruang nama global. Ini kerana pengepala C, termasuk cstdio, berkelakuan seolah-olah nama yang diletakkan dalam ruang nama std juga diletakkan dalam ruang nama global.

Contoh:

Kod berikut menggunakan fungsi std::printf, yang ditakrifkan dalam ruang nama std:

<code class="cpp">std::printf("hello world"); // Correct</code>

Sebaliknya, kod berikut menggunakan fungsi printf, yang ditakrifkan dalam ruang nama global:

<code class="cpp">printf("hello world"); // Correct</code>

Perhatikan bahawa termasuk cstdio juga boleh menjadikan fungsi printf tersedia dalam ruang nama std, tetapi ini tidak dijamin. Untuk memastikan ketersediaan dalam kedua-dua ruang nama, adalah disyorkan untuk menggunakan pengepala yang sepadan dengan ruang nama yang dikehendaki:

  • cstdio - Nama yang ditakrifkan dalam ruang nama std
  • stdio.h - Nama yang ditakrifkan dalam global ruang nama

Atas ialah kandungan terperinci Mengapakah cstdio mengimport simbol ke dalam ruang nama std manakala stdio.h mengimportnya ke dalam ruang nama global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn