_Generic(3)

الاسم
_Generic - اختيار عام النوع

موجز
_Generic(expression, type1: e1, ... /*, default: e */);

الوصف
_Generic() يُقيّم مسار الكود تحت محدد النوع المتوافق مع نوع التعبير المتحكم، أو مبدئي: إذا لم يكن أي نوع متوافقًا.

التعبير لا يُقيّم.

هذا مفيد بشكل خاص لكتابة وحدات ماكرو عامة النوع، التي تتصرف بشكل مختلف اعتمادًا على نوع الوسيط.

المعايير
C11.

التاريخ
C11.

أمثلة
البرنامج التالي يوضح كيفية كتابة بديل للدالة القياسية imaxabs(3)، التي كونها دالة لا يمكنها حقًا توفير ما تعد به: الترقية بسلاسة إلى أوسع نوع متاح.

        #include <stdint.h>
        #include <stdio.h>
        #include <stdlib.h>

        #define my_imaxabs  _Generic(INTMAX_C(0),  \
            long:           labs,                  \
            long long:      llabs                  \
        /*  long long long: lllabs */              \
        )

        int
        main(void)
        {
            off_t  a;

            a = -42;
            printf("imaxabs(%jd) == %jd\n", (intmax_t) a, my_imaxabs(a));
            printf("&imaxabs == %p\n", &my_imaxabs);
            printf("&labs    == %p\n", &labs);
            printf("&llabs   == %p\n", &llabs);

            exit(EXIT_SUCCESS);
        }

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.