Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyusun C Melayan Fungsi Tidak Kosong Tanpa Pulangan Eksplisit Secara Berbeza?
Toleransi Pengkompil terhadap Fungsi Tidak Mengembalikan Nilai
Dalam C , fungsi bukan lompang dijangka mengembalikan nilai. Walau bagaimanapun, dalam senario tertentu, fungsi mungkin kelihatan tidak mengembalikan nilai, yang membawa kepada persoalan tentang kelakuannya.
Gelagat Diperhatikan
Coretan kod yang disediakan mengisytiharkan bukan -fungsi void, Min, yang tidak mengembalikan nilai secara eksplisit. Sebaliknya, ia mengemas kini parameter rujukan, keluar, dengan hasil yang diingini.
Pematuhan Standard
Mengikut piawaian draf C 11, tidak memberikan nilai pulangan dalam fungsi bukan lompang membentuk tingkah laku yang tidak ditentukan. Ini bermakna bahawa pengkompil tidak diwajibkan untuk mengeluarkan ralat atau amaran, kerana mungkin sukar untuk menentukan niat dengan tepat dalam semua kes.
Kelakuan Pengkompil
Walaupun kekaburan standard, penyusun tertentu seperti GCC dan Clang boleh mengeluarkan amaran dengan bendera -Wall, memberitahu tentang kemungkinan isu. Dengan memanfaatkan bendera -Werror=return-type, amaran ini boleh ditukar kepada ralat.
Gelagat Visual Studio
Dalam Microsoft Visual Studio, kod serupa dengan yang disediakan coretan akan menghasilkan ralat (C4716) secara lalai, menguatkuasakan jangkaan bahawa fungsi bukan lompang harus mengembalikan nilai.
Makluman Tingkah Laku Tidak Ditakrifkan
Adalah penting untuk ambil perhatian bahawa bergantung pada tingkah laku yang tidak ditentukan adalah tidak disyorkan. Walaupun sesetengah penyusun mungkin memberikan amaran atau ralat, yang lain mungkin mengabaikan isu itu, yang berpotensi membawa kepada pelaksanaan program yang tidak dijangka atau salah.
Atas ialah kandungan terperinci Mengapa Penyusun C Melayan Fungsi Tidak Kosong Tanpa Pulangan Eksplisit Secara Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!