Rumah >pembangunan bahagian belakang >C++ >Bolehkah C Prapemproses Mentakrifkan Semula Kata Kunci dan Masih Mematuhi Piawaian?

Bolehkah C Prapemproses Mentakrifkan Semula Kata Kunci dan Masih Mematuhi Piawaian?

Barbara Streisand
Barbara Streisandasal
2024-12-11 11:40:12370semak imbas

Can C   Preprocessors Redefine Keywords and Still Be Standards Compliant?

Mentakrifkan Semula Kata Kunci dalam Prapemprosesan C: Pematuhan Standard

Penggunaan #define untuk mentakrifkan semula kata kunci bahasa telah mencetuskan perdebatan dalam komuniti pembangun. Artikel ini menyelidiki piawaian mengenai amalan ini.

Pematuhan Piawaian dengan Kata Kunci Ditakrif Semula

Mengikut Piawaian C (§17.4.3.1.1/2), a prapemproses C yang mematuhi piawaian tidak boleh mentakrifkan semula kata kunci jika unit terjemahan termasuk pengepala perpustakaan standard. Sekatan ini ditarik balik untuk unit terjemahan tanpa pengepala standard.

Dalam C 0x, ayat kedua perenggan yang disebutkan di atas seolah-olah melarang definisi semula kata kunci sama sekali, yang membawa kepada kekeliruan. Walau bagaimanapun, Ken Bloom menjelaskan bahawa peraturan tidak berubah dalam C 0x. Teks itu hanya disusun semula dengan cara yang boleh menyebabkan salah faham.

Akibat Ketidakpatuhan

Jika atur cara C mentakrifkan semula kata kunci bahasa, ia tidak semestinya menjadi tidak akur. Walau bagaimanapun, ia tidak dijamin mudah alih merentasi penyusun atau platform yang berbeza. Selain itu, program sedemikian mungkin menghadapi gelagat atau ralat yang tidak dijangka jika ia cuba berinteraksi dengan pengepala perpustakaan standard yang mengharapkan takrifan kata kunci asal.

Atas ialah kandungan terperinci Bolehkah C Prapemproses Mentakrifkan Semula Kata Kunci dan Masih Mematuhi Piawaian?. 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