Rumah > pembangunan bahagian belakang > C++ > Mengapakah Ahli Data Statik Memerlukan Definisi Luaran dalam C ?

Mengapakah Ahli Data Statik Memerlukan Definisi Luaran dalam C ?

Barbara Streisand
Lepaskan: 2024-12-17 01:52:25
asal
348 orang telah melayarinya

Why Do Static Data Members Need External Definitions in C  ?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan