Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan dalam C ?

Linda Hamilton
Lepaskan: 2024-10-25 13:04:03
asal
543 orang telah melayarinya

How to Fix the

Menyelesaikan Ralat "Ungkapan Malar Jangkaan" untuk Saiz Tatasusunan

Pertimbangkan kod C berikut:

<code class="cpp">int count = 0;
float sum = 0;
float maximum = -1000000;

std::ifstream points;

int size = 100;
float x[size][2]; // <<< Error
Salin selepas log masuk

Ini kod menimbulkan ralat "ekspresi malar dijangka" apabila mengisytiharkan tatasusunan x. Ralat ini berlaku kerana C memerlukan saiz tatasusunan bukan statik untuk diketahui pada masa penyusunan.

Penyelesaian Menggunakan Vektor

Untuk menyelesaikan isu ini, kita boleh menggunakan vektor C bukannya tatasusunan:

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
Salin selepas log masuk

Penyelesaian Menggunakan baharu

Pendekatan lain melibatkan memperuntukkan tatasusunan secara dinamik menggunakan operator baharu:

<code class="cpp">float (*px)[2] = new float[size][2];</code>
Salin selepas log masuk

Penyelesaian Alternatif

  • Gunakan Boost: Jika anda mempunyai akses kepada perpustakaan Boost, anda boleh menggunakan boost::array dan bukannya std::array.
  • Tentukan Jenis Tatasusunan Tersuai: Tentukan jenis tatasusunan tersuai yang menyokong saiz dinamik dan gunakannya dalam vektor.

Pertimbangan untuk Pengkompil Bukan C 11

Jika anda tidak mempunyai sokongan C 11, gunakan teknik berikut:

  • Gunakan templat identiti untuk memudahkan sintaks apabila menggunakan baharu.
  • Gunakan vektor std::pair sebagai alternatif kepada penyelesaian vektor yang dinyatakan sebelum ini.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Expected Constant Expression\' Apabila Mengisytiharkan Tatasusunan 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!