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

Bagaimanakah Parameter Makro Pilihan Boleh Dilaksanakan dalam C?

Barbara Streisand
Lepaskan: 2024-11-15 07:53:02
asal
987 orang telah melayarinya

How Can Optional Macro Parameters Be Implemented in C  ?

Makro Pilihan dengan Prapemproses C

Dalam C , parameter makro pilihan boleh meningkatkan fleksibiliti kod. Kaedah untuk melaksanakan ini adalah melalui makro gaya beban lampau. Mari kita terokai cara teknik ini berfungsi.

Satu pendekatan menggunakan senarai hujah makro dua kali. Pertama, ia membina nama makro pembantu. Kedua, ia menyerahkan hujah kepada makro pembantu yang sesuai. Helah standard digunakan untuk menentukan bilangan hujah makro.

Pertimbangkan kod berikut:

enum
{
    plain = 0,
    bold = 1,
    italic = 2
};

void PrintString(const char* message, int size, int style)
{
}

#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__)

int main(int argc, char * const argv[])
{
    PRINT_STRING("Hello, World!");
    PRINT_STRING("Hello, World!", 18);
    PRINT_STRING("Hello, World!", 18, bold);

    return 0;
}
Salin selepas log masuk

Pendekatan ini memudahkan seruan makro untuk pemanggil sambil berpotensi memperkenalkan kerumitan untuk penulis makro.

Atas ialah kandungan terperinci Bagaimanakah Parameter Makro Pilihan Boleh Dilaksanakan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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