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
Lepaskan: 2024-10-31 02:01:29
asal
686 orang telah melayarinya

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>
Salin selepas log masuk

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

<code class="cpp">printf("hello world"); // Correct</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan