Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       _Generic - selecție de tip-generic

REZUMAT

       _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 și ulterioare.

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  creată  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⟩.