_Generic(3) Library Functions Manual _Generic(3)

_Generic - selecție de tip-generic

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

_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.

C11.

C11.

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

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 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.

31 octombrie 2023 Pagini de manual de Linux 6.06