Rumah > pembangunan bahagian belakang > C++ > Mengapa Fungsi Non-Void C Saya Tidak Mengembalikan Nilai Menghasilkan Ralat Pengkompil?

Mengapa Fungsi Non-Void C Saya Tidak Mengembalikan Nilai Menghasilkan Ralat Pengkompil?

Susan Sarandon
Lepaskan: 2024-12-16 08:27:14
asal
1071 orang telah melayarinya

Why Doesn't My Non-Void C   Function Returning No Value Produce a Compiler Error?

Fungsi Bukan Kosong Tidak Mengembalikan Nilai dalam Kod C

Soalan:

Kod C di bawah ini mempunyai fungsi bukan batal yang tidak mengembalikan nilai:

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a,b,out);
    out.w = min(a.w,b.w);
}
Salin selepas log masuk

Mengapa ia menyusun tanpa ralat?

Jawapan:

Tingkah laku ini tidak ditentukan mengikut bahagian standard draf C 11 6.6.3 perenggan 2, yang menyatakan bahawa mengalir keluar dari hujung nilai -fungsi mengembalikan menghasilkan tingkah laku yang tidak ditentukan.

Amaran Pengkompil dan Ralat:

  • gcc dan denting: Boleh menjana amaran menggunakan bendera -Wall (amaran: kawalan mencapai penghujung fungsi bukan lompang [-jenis Wreturn] ). Ini boleh ditukar kepada ralat menggunakan bendera -Werror=return-type.
  • Visual Studio: Menjana ralat C4716 ('Min' : mesti mengembalikan nilai) secara lalai, atau amaran C4715 jika tidak semua laluan kod kembali a nilai.

Implikasi:

Tingkah laku yang tidak ditentukan boleh membawa kepada hasil yang tidak dapat diramalkan, termasuk ranap program. Adalah disyorkan untuk menggunakan pilihan pengkompil seperti -Wall dan -Wextra untuk mengesan dan membetulkan kejadian tingkah laku yang tidak ditentukan.

Atas ialah kandungan terperinci Mengapa Fungsi Non-Void C Saya Tidak Mengembalikan Nilai Menghasilkan Ralat Pengkompil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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