_Generic(3)

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.

GESCHICHTE
C11.

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