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
430 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!

sumber:php.cn
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