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
Susan Sarandonasal
2024-12-16 08:27:14962semak imbas

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);
}

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:
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