Memahami "penggunaan odr" dalam C
Dalam C , konsep "satu peraturan takrifan" (ODR) memastikan bahawa bagi setiap entiti yang diisytiharkan dalam berbilang unit kompilasi, terdapat hanya satu definisi. Walau bagaimanapun, menentukan bila definisi diperlukan boleh mengelirukan. Istilah "penggunaan odr" mula digunakan dalam konteks ini.
Menurut Piawaian C, pembolehubah atau fungsi digunakan secara odr:
Takrifan ini agak abstrak, jadi mari kita permudahkan. Odr-use pada asasnya bermaksud bahawa entiti digunakan sedemikian rupa sehingga ia mesti ditakrifkan di suatu tempat dalam program. Ini termasuk penggunaan sebenar, seperti memanggil fungsi atau mengakses pembolehubah, serta potensi penggunaan, seperti menjadi calon untuk resolusi beban lampau.
Dalam kes fungsi ahli templat kelas, ia hanya disegerakan ( dan oleh itu ditakrifkan) jika ia digunakan secara odr. Ini bermakna bahawa mereka mesti dipanggil, atau kelas itu sendiri mesti dibuat instantiat dengan fungsi ahli itu menjadi maya.
Standard bergantung pada prinsip ini untuk mengelakkan instantiasi yang tidak perlu. Sebagai contoh, fungsi std::list::sort memerlukan operator< pada unsur-unsurnya. Dengan mengisytiharkan senarai dengan jenis elemen yang tidak menyokong operator<, selagi isihan tidak dipanggil, fungsi ahli tidak akan dibuat seketika.
Memahami penggunaan odr adalah penting untuk mengelakkan ralat yang berkaitan dengan hilang takrifan dan takrifan berbilang dalam pelbagai unit kompilasi. Dengan mematuhi peraturan ini, pengaturcara boleh menulis kod C yang mantap dan boleh diselenggara.
Atas ialah kandungan terperinci Apakah ODR-Use dalam C dan Bilakah Definisi Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!