Rumah >pembangunan bahagian belakang >C++ >Bolehkah Fungsi C Disarang?

Bolehkah Fungsi C Disarang?

Barbara Streisand
Barbara Streisandasal
2024-12-28 07:54:14506semak imbas

Can C   Functions Be Nested?

Fungsi Bersarang dalam C

Soalan: Adakah mungkin untuk mentakrifkan fungsi dalam fungsi lain dalam C ?

Jawapan:

C Moden (C 11 atau lebih baru):

Ya, anda boleh mencipta fungsi bersarang menggunakan lambda. Lambdas membenarkan anda mentakrifkan fungsi tanpa nama yang boleh menangkap pembolehubah setempat dalam skopnya.

int main() {
    auto print_message = [](std::string message) {
        std::cout << message << "\n";
    };
    print_message("Hello!");
}

C 98 dan C 03:

Dalam C 98 dan C 03, mentakrifkan secara langsung fungsi dalam fungsi tidak disokong. Walau bagaimanapun, anda boleh menggunakan teknik berikut:

  1. Tentukan kelas tempatan dalam fungsi luar.
  2. Isytihar fungsi statik dalam kelas tempatan.
int main() {
    struct X {
        static void a() {}
    };
    X::a();
}

Walaupun ini membolehkan anda mencipta fungsi di dalam fungsi, ia dianggap sebagai penyelesaian dan harus digunakan dengan berhati-hati kerana potensinya untuk kekaburan dalam pemahaman kod.

Atas ialah kandungan terperinci Bolehkah Fungsi C Disarang?. 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