وحدات الماكرو ذات المعلمات المتغيرة في لغة C
توفر المعلمات الاختيارية طريقة ملائمة لتحديد المعلمات التي لها قيم افتراضية، مما يوفر المرونة لاستدعاءات الوظائف. على الرغم من أن لغة C لا تدعم في الأصل المعلمات الاختيارية في وحدات الماكرو، إلا أن هناك تقنيات يمكنها محاكاة هذا السلوك.
يتضمن أحد الأساليب استخدام نمط ماكرو متكرر. لنأخذ مثالاً:
#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)
يأخذ الماكرو PRINT_STRING عددًا متغيرًا من الوسائط. يستخدم الماكرو PRINT_STRING_MACRO_CHOOSER قائمة الوسائط مرتين: مرة لتحديد الماكرو المساعد الصحيح (PRINT_STRING_1_ARGS أو PRINT_STRING_2_ARGS أو PRINT_STRING_3_ARGS) بناءً على عدد الوسائط، ومرة أخرى لتمرير الوسائط إلى الماكرو المساعد المحدد.
وإليك كيفية استخدامه:
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
يوفر هذا الأسلوب معلمات اختيارية في وحدات الماكرو، مما يسمح للمتصل بتحديد المعلمات التي يحتاجها فقط. ومع ذلك، فإنه يتطلب تحديد وحدات ماكرو مساعدة متعددة، والتي يمكن أن تصبح مطولة لعدد أكبر من المعلمات الاختيارية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3