Mengapa Ahli Data Statik Memerlukan Definisi Luaran
Dokumentasi IBM C menyatakan bahawa ahli data statik yang diisytiharkan dalam kelas bukanlah definisi sebenar, dan mesti ditakrifkan secara luaran dalam skop ruang nama. Keperluan ini mengikut peraturan asas dalam C yang dikenali sebagai "Peraturan Satu Definisi."
Peranan Peraturan Satu Definisi
Peraturan Satu Definisi memastikan bahawa setiap statik objek (jika dirujuk) ditakrifkan dengan tepat sekali dalam program. Peraturan ini menjadi penting dalam C , di mana definisi kelas sering tersebar merentas berbilang fail sumber dan disertakan melalui fail pengepala.
Mengelakkan Pelbagai Definisi
Jika pengisytiharan ahli data statik dalam pengepala dianggap definisi, ia akan membawa kepada berbilang takrifan dalam setiap unit terjemahan (fail sumber) yang merangkumi fail pengepala. Ini akan melanggar Peraturan Satu Definisi dan menyebabkan ralat penyusunan.
Keperluan Definisi Luaran
Untuk mengelakkan isu ini, ahli data statik tidak ditakrifkan dalam pengisytiharan kelas tetapi sebaliknya disediakan sebagai definisi luaran di luar kelas. Dengan cara ini, pengkompil boleh memastikan bahawa terdapat hanya satu takrifan untuk setiap ahli data statik yang digunakan dalam atur cara, tanpa mengira bilangan kali kelas disertakan dalam modul yang berbeza.
Alternatif kepada Definisi Luaran
Secara teori, C boleh mengendalikan berbilang definisi untuk ahli data statik sama seperti fungsi sebaris, menggabungkannya menjadi satu takrifan. Walau bagaimanapun, bahasa tidak melaksanakan tingkah laku ini, memerlukan penggunaan definisi luaran untuk ahli data statik.
Atas ialah kandungan terperinci Mengapakah Ahli Data Statik Memerlukan Definisi Luaran dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!