Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mensimulasikan Parameter Pilihan dalam Makro C?

Bagaimanakah Saya Boleh Mensimulasikan Parameter Pilihan dalam Makro C?

Barbara Streisand
Lepaskan: 2024-11-17 04:46:03
asal
342 orang telah melayarinya

How Can I Simulate Optional Parameters in C   Macros?

Makro dengan Parameter Boleh Ubah dalam C

Parameter pilihan menawarkan cara yang mudah untuk menentukan parameter yang mempunyai nilai lalai, memberikan kefleksibelan untuk fungsi panggilan. Walaupun C tidak menyokong parameter pilihan dalam makro secara asli, terdapat teknik yang boleh mensimulasikan gelagat ini.

Satu pendekatan melibatkan penggunaan corak makro rekursif. Mari kita ambil contoh:

#define PRINT_STRING(message, ...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

#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)
Salin selepas log masuk

Makro PRINT_STRING mengambil bilangan argumen yang berubah-ubah. Makro PRINT_STRING_MACRO_CHOOSER menggunakan senarai argumen dua kali: sekali untuk menentukan makro pembantu yang betul (PRINT_STRING_1_ARGS, PRINT_STRING_2_ARGS atau PRINT_STRING_3_ARGS) berdasarkan bilangan argumen dan sekali lagi untuk menghantar argumen kepada makro pembantu yang dipilih.

PRINT_STRING("Hello, World!");  // Defaults to no size or style
PRINT_STRING("Hello, World!", 18); // Specifies only size
PRINT_STRING("Hello, World!", 18, bold); // Specifies both size and style
Salin selepas log masuk
Pendekatan ini menyediakan parameter pilihan dalam makro, membenarkan pemanggil untuk menentukan hanya parameter yang mereka perlukan. Walau bagaimanapun, ia memerlukan penentuan berbilang makro pembantu, yang boleh menjadi verbose untuk bilangan parameter pilihan yang lebih besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Parameter Pilihan dalam 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