Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Anda Boleh Mencipta Parameter Pilihan dan Terlebih Beban dengan Makro C?

Bagaimanakah Anda Boleh Mencipta Parameter Pilihan dan Terlebih Beban dengan Makro C?

Mary-Kate Olsen
Lepaskan: 2024-11-27 21:34:12
asal
176 orang telah melayarinya

How Can You Create Optional and Overloaded Parameters with C   Macros?

Parameter Pilihan dan Terlebih Beban dengan Makro C

Pengenalan

Makro C menyediakan kaedah yang mudah untuk penggunaan semula kod dan parameterisasi. Walau bagaimanapun, secara lalai, makro tidak boleh mengendalikan parameter pilihan atau lebih muatan. Artikel ini meneroka teknik untuk mengatasi had ini.

Penyelesaian

Pendekatan berasaskan makro berikut membenarkan parameter pilihan dan lebihan beban:

#define PRINT_STRING_1_ARGS(message) PrintString(message, 0, 0)
#define PRINT_STRING_2_ARGS(message, size) PrintString(message, size, 0)
#define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style)

#define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4
#define PRINT_STRING_MACRO_CHOOSER(...) \
    GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \
                PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, )

#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
Salin selepas log masuk

Penggunaan

Penyelesaian berasaskan makro ini menyediakan dua faedah:

  • Parameter Pilihan: Anda boleh menentukan hanya parameter yang diperlukan dan parameter yang hilang akan lalai kepada nilai yang sesuai.
  • Melebihi muatan: Versi fungsi PrintString yang berbeza boleh digunakan berdasarkan bilangan parameter lulus.

Anda boleh menggunakan makro PRINT_STRING seperti berikut:

PRINT_STRING("Hello, World!"); // No size or style specified
PRINT_STRING("Hello, World!", 18); // Size specified
PRINT_STRING("Hello, World!", 18, bold); // Size and style specified
Salin selepas log masuk

Butiran Pelaksanaan

Penyelesaian ini menggunakan beberapa teknik:

  • Pengiraan Hujah: Makro __VA_ARGS__ menyediakan senarai argumen makro yang dipisahkan koma. Makro GET_4TH_ARG digunakan untuk mengira bilangan argumen dan memilih fungsi PrintString yang sesuai.
  • Panggilan Makro Rekursif: Makro PRINT_STRING_MACRO_CHOOSER secara rekursif memanggil lebihan PrintString yang sesuai berdasarkan bilangan hujah.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencipta Parameter Pilihan dan Terlebih Beban dengan Makro 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan