Bagikan melalui


Ruang Nama

Pengompilasi menyiapkan "ruang nama" untuk membedakan antara pengidentifikasi yang digunakan untuk berbagai jenis item. Nama dalam setiap ruang nama harus unik untuk menghindari konflik, tetapi nama yang identik dapat muncul di lebih dari satu ruang nama. Ini berarti Anda dapat menggunakan pengidentifikasi yang sama untuk dua atau beberapa item yang berbeda, asalkan item berada di ruang nama yang berbeda. Pengompilasi dapat menyelesaikan referensi berdasarkan konteks sintaks pengidentifikasi dalam program.

Catatan

Jangan bingung dengan gagasan C terbatas tentang ruang nama dengan fitur "namespace" C++. Lihat Namespace di Referensi Bahasa C++ untuk informasi selengkapnya.

Daftar ini menjelaskan ruang nama yang digunakan dalam C.

Label pernyataan
Label pernyataan bernama adalah bagian dari pernyataan. Definisi label pernyataan selalu diikuti oleh titik dua tetapi bukan bagian dari label case. Penggunaan label pernyataan selalu segera mengikuti kata kunci goto. Label pernyataan tidak harus berbeda dari nama lain atau dari nama label dalam fungsi lain.

Tag struktur, union, dan enumerasi
Tag ini adalah bagian dari penentu jenis struktur, gabungan, dan enumerasi dan, jika ada, selalu segera mengikuti kata structyang dipesan , , unionatau enum. Nama tag harus berbeda dari semua tag struktur, enumerasi, atau gabungan lainnya dengan visibilitas yang sama.

Anggota struktur atau serikat
Nama anggota dialokasikan dalam ruang nama yang terkait dengan setiap struktur dan jenis gabungan. Artinya, pengidentifikasi yang sama dapat menjadi nama komponen dalam sejumlah struktur atau gabungan secara bersamaan. Definisi nama komponen selalu terjadi dalam penentu jenis struktur atau gabungan. Penggunaan nama komponen selalu segera mengikuti operator pemilihan anggota (-> dan .). Nama anggota harus unik dalam struktur atau gabungan, tetapi tidak harus berbeda dari nama lain dalam program, termasuk nama anggota dari struktur dan gabungan yang berbeda, atau nama struktur itu sendiri.

Pengidentifikasi biasa
Semua nama lain termasuk dalam ruang nama yang mencakup variabel, fungsi (termasuk parameter formal dan variabel lokal), dan konstanta enumerasi. Nama pengidentifikasi memiliki visibilitas berlapis, sehingga Anda dapat menentukan ulang dalam blok.

Nama typedef
Nama typedef tidak dapat digunakan sebagai pengidentifikasi dalam cakupan yang sama.

Misalnya, karena tag struktur, anggota struktur, dan nama variabel berada di tiga ruang nama yang berbeda, tiga item yang dinamai student dalam contoh ini tidak bertentangan. Konteks setiap item memungkinkan interpretasi yang benar dari setiap kemunculan student dalam program. (Untuk informasi tentang struktur, lihat Deklarasi Struktur.)

struct student {
   char student[20];
   int class;
   int id;
   } student;

Ketika student muncul setelah kata kunci struct, pengompilasi mengenalinya sebagai tag struktur. Saat student muncul setelah operator pemilihan anggota (-> atau .), nama mengacu pada anggota struktur. Dalam konteks lain, student mengacu pada variabel struktur. Namun, kelebihan beban ruang nama tag tidak disarankan karena tidak jelas artinya.

Lihat juga

Struktur Program