Fungsi Bersarang dalam C
Dalam konteks C , persoalan timbul sama ada fungsi boleh ditakrifkan dalam fungsi lain.
C Moden
Dalam C 11 dan versi yang lebih baru (C 14, C 17), fungsi bersarang boleh dilakukan melalui penggunaan ungkapan lambda. Lambdas boleh ditakrifkan dalam fungsi dan berkelakuan seperti fungsi tanpa nama:
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; for (int i = 0; i < 10; i++) { print_message("Hello!"); } return 0; }
C 98 dan C 03
Dalam C 98 dan C 03, fungsi bersarang tidak secara langsung disokong. Walau bagaimanapun, kesan yang sama boleh dicapai melalui penggunaan kelas tempatan dengan fungsi ahli statik:
int main() { struct X { static void a() {} }; X::a(); return 0; }
Walaupun pendekatan ini memberikan persamaan fungsi bersarang, ia tidak semudah menggunakan lambda dalam C moden.
Atas ialah kandungan terperinci Bolehkah Fungsi C Disarang, dan Bagaimanakah Ini Berevolusi Merentas Piawaian Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!