Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mencapai Penangguhan Gaya Golang dalam C ?

Bagaimanakah Saya Boleh Mencapai Penangguhan Gaya Golang dalam C ?

DDD
Lepaskan: 2024-11-02 01:26:31
asal
628 orang telah melayarinya

How Can I Achieve Golang-Style Defer in C  ?

Memahami Penangguhan Gaya Golang dalam C

Pengenalan:

Dalam C , konsep pelaksanaan tertunda, serupa dengan penangguhan Golang, menyediakan cara yang mudah untuk melaksanakan kod selepas fungsi tertentu kembali atau keluar.

STL dan Pelaksanaan Perpustakaan:

Setakat C 14 dan kemudian, Perpustakaan Templat Standard (STL) atau perpustakaan lain seperti Boost tidak menyediakan pelaksanaan langsung corak pelaksanaan tertunda. Walau bagaimanapun, terdapat beberapa perpustakaan dan teknik pihak ketiga yang tersedia untuk mencapai fungsi ini.

Pelaksanaan Tersuai:

Coretan kod yang disediakan menawarkan overhed sifar, mudah- untuk menggunakan pelaksanaan penangguhan:

<code class="cpp">#ifndef defer
struct defer_dummy {};
template <class F> struct deferrer { F f; ~deferrer() { f(); } };
template <class F> deferrer<F> operator*(defer_dummy, F f) { return {f}; }
#define DEFER_(LINE) zz_defer##LINE
#define DEFER(LINE) DEFER_(LINE)
#define defer auto DEFER(__LINE__) = defer_dummy{} *[&]()
#endif // defer</code>
Salin selepas log masuk

Penggunaan:

Untuk menggunakan pelaksanaan ini, hanya letakkan penangguhan sebelum skop kod yang anda ingin laksanakan selepas fungsi keluar:

<code class="cpp">defer {
   // Code to be executed after the function returns
};</code>
Salin selepas log masuk

Contoh:

Contoh berikut menunjukkan cara menggunakan pelaksanaan tangguh ini untuk membuka dan membaca fail, menutup fail secara automatik apabila skop keluar :

<code class="cpp">#include <cstdint>
#include <cstdio>
#include <cstdlib>

bool read_entire_file(char *filename, std::uint8_t *&data_out,
                      std::size_t *size_out = nullptr) {
    ...

    defer { std::fclose(file); }; // Automatically close the file

    ...
}</code>
Salin selepas log masuk

Kelebihan:

Pelaksanaan ini memberikan beberapa kelebihan berbanding pendekatan lain:

  • Sifar-overhed, tanpa sebarang masa jalan tambahan overhead
  • Sintaksis lebih ringkas dan lebih mudah digunakan
  • Sifar kebergantungan, mengurangkan masa penyusunan
  • Boleh ditampal dengan mudah di mana-mana dalam pangkalan kod

Kesimpulan:

Pelaksanaan penangguhan tersuai ini menawarkan cara yang mudah dan cekap untuk mencapai pelaksanaan tertunda dalam C , menyediakan fungsi yang serupa dengan kata kunci tangguh Golang tanpa memerlukan kelas tersuai atau kebergantungan tambahan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Penangguhan Gaya Golang dalam C ?. 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