Rumah > pembangunan bahagian belakang > C++ > Sekiranya fungsi dan pengepala C digunakan daripada ruang nama `std::` atau ruang nama global dalam C ?

Sekiranya fungsi dan pengepala C digunakan daripada ruang nama `std::` atau ruang nama global dalam C ?

Susan Sarandon
Lepaskan: 2024-11-14 19:00:02
asal
914 orang telah melayarinya

Should C functions and headers be used from the `std::` namespace or the global namespace in C  ?

Menggunakan Pengepala C dalam C : Ruang Nama atau Skop Global?

Dalam C , seseorang boleh mengakses fungsi dan pengepala C dengan mengubah suai fail pengepala nama (cth., stdio.h kepada cstdio, stdlib.h kepada cstdlib). Walau bagaimanapun, ia menimbulkan persoalan sama ada hendak menggunakan fungsi daripada ruang nama std:: atau ruang nama global untuk pengepala ini dalam kod C.

Ruang nama lwn. Skop Global dalam C

Menurut Piawaian C 11, setiap pengepala C dengan sambungan ".h" berkelakuan seolah-olah namanya diletakkan dalam kedua-dua ruang nama global dan ruang nama std. Ia masih tidak dinyatakan sama ada nama ini pertama kali diisytiharkan dalam ruang nama std:: dan disuntik ke dalam ruang nama global atau sebaliknya.

Pendekatan Pilihan

Untuk memastikan keserasian dengan masa hadapan C menyemak dan mengalih keluar kekaburan yang berpotensi, adalah disyorkan untuk menggunakan pengepala "cname" dan mengisytiharkan serta mentakrifkan fungsi dalam ruang nama std::. Penggunaan pengepala ".h" lama tidak lagi digunakan dan telah dikenal pasti untuk dialih keluar dalam semakan akan datang.

Contoh Kod

Pilih coretan kod berikut:

#include <cstdio>

int main() {
    std::printf("Hello world\n");
}
Salin selepas log masuk

over:

#include <stdio.h>

int main() {
    printf("Hello world\n");
}
Salin selepas log masuk

Kesimpulan

Walaupun mungkin untuk menggunakan kedua-dua std:: dan ruang nama global untuk fungsi dan pengepala C dalam C , pendekatan pilihan ialah memasukkan pengepala "cname" dan menggunakan pengisytiharan dan takrifan daripada ruang nama std:: untuk konsistensi dengan semakan C masa hadapan dan untuk mengelakkan isu yang berpotensi.

Atas ialah kandungan terperinci Sekiranya fungsi dan pengepala C digunakan daripada ruang nama `std::` atau ruang nama global dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan