Rumah > pembangunan bahagian belakang > C++ > Bolehkah Fungsi C Disarang, dan Bagaimanakah Ini Berevolusi Merentas Piawaian Berbeza?

Bolehkah Fungsi C Disarang, dan Bagaimanakah Ini Berevolusi Merentas Piawaian Berbeza?

DDD
Lepaskan: 2024-12-20 08:27:10
asal
509 orang telah melayarinya

Can C   Functions Be Nested, and How Has This Evolved Across Different Standards?

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan