Rumah >pembangunan bahagian belakang >C++ >Mengapakah Sesetengah Penyusun C Menerima Tatasusunan Panjang Berubah (VLA) Walaupun Larangan Standard?

Mengapakah Sesetengah Penyusun C Menerima Tatasusunan Panjang Berubah (VLA) Walaupun Larangan Standard?

DDD
DDDasal
2024-12-23 22:10:15794semak imbas

Why Do Some C   Compilers Accept Variable Length Arrays (VLAs) Despite Standard Prohibition?

Penerimaan Pengkompil Tatasusunan Panjang Berubah (VLA) dalam C

Walaupun tiada Tatasusunan Panjang Berubah (VLA) dalam piawaian C, penyusun seperti g dan clang secara mengejutkan menerima sintaks VLA. Ini telah menimbulkan persoalan tentang kelakuan pengkompil dan implikasi ciri bukan standard ini.

Toleransi Pengkompil

Penerimaan pengkompil terhadap VLA berpunca daripada reka bentuk yang wujud. GCC, khususnya, mengutamakan keserasian dengan pengkompil C lama, membolehkannya mengenali sintaks VLA walaupun secara teknikal ia bukan sebahagian daripada standard C.

Kedudukan Standard

The Tatabahasa C menyatakan bahawa saiz tatasusunan mestilah ungkapan tetap. Memandangkan VLA menggunakan ungkapan berubah-ubah, ia melanggar peraturan ini dan oleh itu tidak dianggap sebagai sebahagian daripada piawaian C.

Pelaksanaan Pengkompil

VLA dalam pengkompil C dilaksanakan sebagai sambungan pengkompil . Pengkompil mengendalikannya dengan memperuntukkan tatasusunan pada tindanan semasa pelaksanaan, serupa dengan tatasusunan biasa. Walau bagaimanapun, piawaian tidak mentakrifkan gelagat ini, jadi ia tertakluk kepada variasi merentas penyusun yang berbeza.

Akibat

Menggunakan VLA dalam C memperkenalkan beberapa implikasi:

  • Isu keserasian: Kod dengan VLA mungkin tidak dikompil atau dijalankan pada semua pengkompil C yang mematuhi piawai dengan ketat.
  • Tingkah laku tidak ditentukan: Standard tidak menyatakan cara VLA diperuntukkan, jadi tingkah laku pengurusan memori mereka boleh menjadi tidak dapat diramalkan.
  • Kemudahalihan yang dikurangkan: Bergantung pada sambungan pengkompil menjadikan kod kurang mudah alih merentas sistem dan penyusun yang berbeza.

Atas ialah kandungan terperinci Mengapakah Sesetengah Penyusun C Menerima Tatasusunan Panjang Berubah (VLA) Walaupun Larangan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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