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

BEZEICHNUNG

       _Generic - Typ-generische Auswahl

ÜBERSICHT

       _Generic(Ausdruck, type1: e1, … /*, default: e */);

BESCHREIBUNG

       _Generic()  wertet  den  Codepfad unter der Typauswahl aus, der mit dem Typ des steuernden
       Ausdrucks kompatibel ist oder mit default:, falls kein Typ kompatibel ist.

       Ausdruck wird nicht ausgewertet.

       Dies ist insbesondere zum Schreiben von Typ-generischen Makros nützlich, die sich abhängig
       vom Typ des Arguments verschieden verhalten werden.

STANDARDS

       C11 und neuer.

BEISPIELE

       Das   folgende  Programm  zeigt,  wie  ein  Ersatz  für  die  Standardfunktion  imaxabs(3)
       geschrieben wird, die eine Funktion ist, die nicht wirklich  das  leisten  kann,  was  sie
       verspricht: nahtlose Aktualisierung auf den weitesten verfügbaren Typ.

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

ÜBERSETZUNG

       Die    deutsche    Übersetzung   dieser   Handbuchseite   wurde   von   Helge   Kreutzmann
       <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version  3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-
       Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.