_Generic(3)

NUME
_Generic - selecție de tip-generic

SINOPSIS
_Generic(expresia, type1: e1, ... /*, default: e */);

DESCRIERE
_Generic() evaluează ruta de cod din cadrul selectorului de tip care este compatibil cu tipul expresiei expresia de control sau default: (expresia implicită) dacă nu există un tip compatibil.

expresia nu este evaluată.

Acest lucru este util în special pentru a scrie macrocomenzi generice de tip, care se vor comporta diferit în funcție de tipul argumentului.

STANDARDE
C11.

ISTORIC
C11.

EXEMPLE
Următorul program demonstrează cum se poate scrie un înlocuitor pentru funcția standard imaxabs(3), care, fiind o funcție, nu poate oferi cu adevărat ceea ce promite: trecerea fără probleme la cel mai larg tip disponibil.

        #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);
        }

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.