Rumah > pembangunan bahagian belakang > C++ > Bolehkah C Enums Diisytiharkan ke Hadapan, dan Jika Ya, Bagaimana dan Bila?

Bolehkah C Enums Diisytiharkan ke Hadapan, dan Jika Ya, Bagaimana dan Bila?

Susan Sarandon
Lepaskan: 2024-12-19 17:37:14
asal
339 orang telah melayarinya

Can C   Enums Be Forward Declared, and If So, How and When?

Pengisytiharan Hadapan Enum dalam C : Meneroka Had dan Alternatif

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 : ; sintaks. Ini membolehkan kami memajukan pengisytiharan enum asalkan saiznya dinyatakan di muka:

enum Enum2 : unsigned int;      // Legal in C++11, size explicity specified
Salin selepas log masuk

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"
Salin selepas log masuk

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:

  • Gunakan kelas dan bukannya enum.
  • Gunakan typedef untuk mencipta pemalar simbolik untuk enum taip.
  • Gunakan makro untuk mewakili nilai enum.

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!

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