Fungsi Bersarang dalam C
C tidak menyokong penempatan fungsi dalam fungsi lain secara asli. Walau bagaimanapun, versi moden C (C 11 dan lebih baharu) memperkenalkan lambda, membenarkan bentuk kefungsian bersarang yang terhad.
Lambdas dalam C Moden
Lambdas ialah fungsi tanpa nama yang boleh ditakrifkan dan dipanggil dalam skop fungsi yang lebih besar. Mereka mengambil bentuk umum berikut:
auto lambda_name = [capture_list] (parameter_list) -> return_type { function_body };
Contoh:
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; print_message("Hello!"); }
Dalam contoh ini, print_message ialah lambda yang boleh dipanggil sama seperti fungsi biasa .
Kelas Tempatan dengan Statik Fungsi
Dalam C 98 dan C 03, fungsi bersarang tidak disokong secara langsung. Walau bagaimanapun, anda boleh mencapai kesan yang sama dengan menggunakan kelas tempatan dengan fungsi statik:
int main() { struct X { static void a() {} }; X::a(); }
Dalam contoh ini, a ialah fungsi statik dalam kelas tempatan X. Walaupun pendekatan ini tidak semudah menggunakan lambdas , ia menyediakan cara untuk mempunyai kefungsian seperti bersarang dalam versi C yang lebih lama .
Kesimpulan
Walaupun C tidak menyokong secara langsung fungsi dalam fungsi, lambdas dan kelas tempatan dengan fungsi statik menyediakan cara untuk mencapai hasil yang serupa. Lambdas menawarkan pendekatan yang lebih ringkas dan moden, manakala kelas tempatan menawarkan lebih fleksibiliti dan keserasian dengan versi lama C .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Kefungsian Fungsi Bersarang dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!