Pengisytiharan ke hadapan enum, ciri yang membolehkan kami menangguhkan definisi penuh jenis enum sehingga kemudian dalam kod, adalah ciri yang diingini dalam senario tertentu. Walau bagaimanapun, dalam C , fungsi ini tidak disokong sehingga pengenalan C 11.
Sebab Sekatan:
Dalam C 03 dan versi terdahulu, enum secara tersirat bersaiz berdasarkan kandungannya. Ini bermakna pengkompil perlu mengetahui set lengkap nilai enum untuk menentukan jenis storan yang betul. Memandangkan pengisytiharan hadapan hanya menyatakan nama enum, tidak mungkin untuk menyimpulkan saiz enum, maka larangan itu.
C 11 Pengisytiharan Hadapan:
C 11 memperkenalkan konsep menyatakan secara eksplisit saiz enum menggunakan enum :
enum Enum2 : unsigned int; // Legal in C++11, size explicity specified
Selain itu, kata kunci kelas enum yang diperkenalkan dalam C 11 juga menyediakan cara untuk memajukan mengisytiharkan enum, kerana ia menetapkan lalai jenis "int" kepada enum.
enum class Enum3; // Legal in C++11, default type is "int"
Alternatif Pendekatan:
Jika pengisytiharan ke hadapan tidak dapat dilakukan kerana kebimbangan keserasian ke belakang atau sebab lain, terdapat pendekatan alternatif untuk mencapai pengkapsulan yang serupa:
Kesimpulan:
Pengisytiharan ke hadapan enum boleh dilakukan dalam versi C 11 dan yang lebih baru dengan menyatakan secara eksplisit saiz enum. Dalam versi C sebelumnya, teknik alternatif boleh digunakan untuk mencapai pengkapsulan yang serupa.
Atas ialah kandungan terperinci Bolehkah C Enums Diisytiharkan ke Hadapan, dan Jika Ya, Bagaimana dan Bila?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!