Dalam file sumber tunggal, masing-masing definisi struktur atau menciptakan jenis baru yang bukan sama atau kompatibel dengan struktur lain atau jenis serikat. Namun, specifier jenis yang adalah referensi ke struktur yang ditetapkan sebelumnya atau jenis serikat adalah jenis yang sama. Asosiasi tag referensi dengan definisi, dan secara efektif bertindak sebagai nama jenis. Untuk menggambarkan ini, hanya jenis struktur j dan k yang kompatibel dalam contoh ini:
struct {int a; int b;} h; struct {int a; int b;} i; struct S {int a; int b;} j; struct S k;Struktur kompatibel dapat diberikan satu sama lain.
Struktur atau serikat dengan anggota identik tapi tag yang berbeda tidak kompatibel dan tidak dapat ditugaskan untuk satu sama lain. Struktur dan serikat dengan anggota identik tetapi menggunakan keberpihakan yang berbeda tidak juga kompatibel dan tidak dapat ditugaskan untuk satu sama lain.
Sejak compiler memperlakukan variabel pencacahan dan konstanta sebagai tipe data integer, Anda bebas dapat mencampur nilai-nilai tipe enumerated yang berbeda, terlepas dari kompatibilitas tipe. Kompatibilitas antara tipe enumerasi dan tipe integer yang mewakili dikendalikan oleh opsi compiler dan pragmas terkait. Untuk pembahasan selengkapnya dari qenum opsi compiler dan pragmas terkait, lihat -qenum dan # pragma enum .
Kompatibilitas di file sumber terpisah
Ketika definisi untuk dua struktur, serikat, atau mantri didefinisikan dalam file sumber terpisah, setiap file secara teoritis dapat berisi definisi yang berbeda untuk objek yang tipe dengan nama yang sama. Kedua deklarasi harus kompatibel, atau waktu menjalankan perilaku dari program ini adalah tidak terdefinisi. Oleh karena itu, aturan kompatibilitas yang lebih terbatas dan spesifik daripada untuk kompatibilitas dalam file sumber yang sama. Untuk jenis struktur, serikat, dan pencacahan didefinisikan dalam file terpisah dikompilasi, jenis komposit adalah jenis dalam file sumber arus.
Persyaratan untuk kompatibilitas antara dua struktur, serikat, atau tipe enumerated dideklarasikan di file sumber terpisah adalah sebagai berikut:
- Jika seseorang dinyatakan dengan tag, yang lain juga harus dinyatakan dengan tag yang sama.
- Jika kedua jenis selesai, anggotanya harus sesuai persis jumlahnya, dideklarasikan dengan tipe kompatibel, dan ada pencocokan nama.
Untuk struktur dan serikat, persyaratan tambahan berikut harus dipenuhi untuk kompatibilitas tipe:
- Anggota yang sesuai harus dinyatakan dalam urutan yang sama (berlaku untuk struktur saja).
- Bidang bit yang sesuai harus memiliki lebar yang sama.
Bagian dari USER-DEFINED TYPES adalah :
- Compatibility of structures
- unions
- enumerations
Tidak ada komentar:
Posting Komentar