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