Rumah > pembangunan bahagian belakang > C++ > Sekiranya Penyusun Melemparkan Ralat untuk Fungsi yang Kurang Nilai Pulangan dalam C?

Sekiranya Penyusun Melemparkan Ralat untuk Fungsi yang Kurang Nilai Pulangan dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-24 06:43:13
asal
916 orang telah melayarinya

Should Compilers Throw Errors for Functions Lacking Return Values in C  ?

Adakah Boleh Diterima Penyusun Memulangkan Sampah Apabila Fungsi Mengisytiharkan Jenis Pemulangan Tidak Kosong tetapi Gagal Mengembalikan Nilai?

The ketiadaan pernyataan pulangan dalam fungsi dengan jenis pulangan bukan batal menimbulkan persoalan tentang tingkah laku pengkompil. Walaupun pengkompil mungkin kelihatan memulangkan sampah dalam kes sedemikian, ini bukanlah penyelesaian yang ideal.

Mengapa Ia Bukan Ralat?

Dalam C , berfungsi tanpa nilai pulangan menunjukkan tingkah laku yang tidak ditentukan. Walau bagaimanapun, kebanyakan penyusun mengeluarkan amaran dan bukannya ralat. Ini kerana ia tidak selalunya mudah untuk pengkompil untuk menentukan sama ada fungsi benar-benar berjalan di hujung atau keluar melalui pengecualian.

Pertimbangkan contoh berikut:

int func1() {
    return; // error
}

int func2() {
    // does not return anything
}
Salin selepas log masuk

Dalam kes ini, func2 sepatutnya secara teorinya mencetuskan ralat, tetapi ia tidak. Ini kerana pengkompil tidak dapat menjamin bahawa func2 tidak akan keluar melalui pengecualian, menjadikannya sukar untuk membuktikan bahawa ia benar-benar lari dari penghujung fungsi.

Mengapa Ia Tidak Melemparkan Ralat ?

Tidak seperti pembolehubah tidak dimulakan, yang jelas bermasalah, kekurangan nilai pulangan fungsi mungkin tidak selalu menjadi isu. Contohnya:

int func3() {
    func4();
}
Salin selepas log masuk

Jika func4 membuang pengecualian, maka nilai pulangan yang hilang func3 adalah tidak penting. Walau bagaimanapun, pengkompil tidak boleh sentiasa menentukan sama ada func4 akan membuang atau tidak, terutamanya apabila mempertimbangkan kod yang disusun secara berasingan.

Kesimpulannya, sementara kelakuan tidak ditentukan C untuk fungsi tanpa nilai pulangan adalah tidak ideal, pengkompil biasanya mengeluarkan amaran dan bukannya ralat untuk mengelakkan potensi positif palsu disebabkan oleh kerumitan menentukan laluan pelaksanaan sebenar fungsi.

Atas ialah kandungan terperinci Sekiranya Penyusun Melemparkan Ralat untuk Fungsi yang Kurang Nilai Pulangan 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