Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah anda boleh melaksanakan parameter pilihan dalam makro C untuk penyesuaian kod?

Bagaimanakah anda boleh melaksanakan parameter pilihan dalam makro C untuk penyesuaian kod?

Susan Sarandon
Lepaskan: 2024-11-21 04:09:14
asal
447 orang telah melayarinya

How can you implement optional parameters in C   macros for code customization?

Menyesuaikan Parameter dengan Makro C

Makro ialah aspek asas pengaturcaraan C, membenarkan penyesuaian dan fleksibiliti kod. Satu keperluan biasa ialah keupayaan untuk menentukan parameter pilihan dalam makro.

Parameter Pilihan

Pertimbangkan contoh berikut di mana kita mempunyai makro yang mencetak rentetan:

#define PRINT_STRING(message) PrintString(message, 0, 0)
Salin selepas log masuk

Makro ini menerima satu parameter wajib, mesej untuk dicetak. Untuk menjadikannya lebih serba boleh, kami boleh memperkenalkan parameter pilihan untuk saiz rentetan dan gaya fon:

#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

Melebihi muatan dengan Makro

Untuk mencapai lebihan muatan, kami menggunakan helah untuk mengira bilangan argumen yang dibekalkan kepada makro. Kemudian, kami memilih makro pembantu yang sesuai berdasarkan kiraan hujah ini:

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

Penggunaan

Kini kami boleh menggunakan makro PRINT_STRING yang terlebih muatan dengan parameter pilihan:

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

Sebagai contoh, kita boleh memanggil makro tanpa argumen untuk mencetak rentetan lalai:

PRINT_STRING("Hello, World!");
Salin selepas log masuk

Atau nyatakan saiz rentetan:

PRINT_STRING("Hello, World!", 18);
Salin selepas log masuk

Atau kedua-duanya saiz rentetan dan gaya fon:

PRINT_STRING("Hello, World!", 18, bold);
Salin selepas log masuk

Pendekatan ini memudahkan pengendalian parameter untuk pemanggil makro, meningkatkan kebolehgunaan semula kod dan serba boleh.

Atas ialah kandungan terperinci Bagaimanakah anda boleh melaksanakan parameter pilihan dalam makro C untuk penyesuaian kod?. 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