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
884 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!

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