Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
För ISO C Standard 11 (C11) och senare <tgmath.h> innehåller rubriken, förutom att inkludera <math.h> och <complex.h>, makron som anropar en motsvarande matematisk funktion baserat på parametrarnas typer.
Matematiska funktioner för C-körtidsbiblioteket finns som reala och komplexa varianter. Varje variant finns i tre varianter, beroende på typen av argument: float, doubleoch long double. Eftersom C inte stöder överlagring som C++ gör har varje variant ett annat namn. Om du till exempel vill hämta det absoluta värdet för ett verkligt flyttalsvärde anropar du antingen fabsf, fabseller fabsl beroende på om du skickar ett float, doubleeller long double -värde. För att hämta det komplexa absoluta värdet anropar du ett av cabsf, cabseller cabsl beroende på om du skickar ett float, doublerespektive long double komplext värde. Om argumenten inte matchar någon av ovanstående typer väljs funktionen som om argumenten var dubbla.
<tgmath.h> innehåller makron som förenklar valet av rätt matematisk funktion att anropa. Makrona undersöker vilken typ de skickas och anropar sedan rätt funktion. Makrot sqrt binder sqrt(9.9f) till exempel till sqrtf(), men binder sqrt(9.9) till sqrt(). Om minst ett makroargument för en allmän parameter är komplext binder makrot till en komplex funktion. annars anropas en verklig funktion.
Med typ-generiska makron i <tgmath.h> kan du skriva mer portabel kod eftersom du inte behöver hantera gjutning eller välja olika funktionsnamn beroende på typen av argument.
Dessa makron finns i en egen rubrik så att program som skrivs med rubriken <math.h> inte bryts. Så double x = sin(42); beter sig som det alltid har gjort när du inkluderar <math.h>. Trots detta förväntas de flesta befintliga C-program inte påverkas när <tgmath.h> rubriken inkluderas i stället för <math.h> eller <complex.h>.
I följande tabell visas de makron som är tillgängliga i <tgmath.h> och vad de expanderar till.
modf ingår inte i den här tabellen eftersom det inte har något motsvarande typ-generiskt makro eftersom det inte är klart hur du gör det säkert utan att komplicera typmatchningen.
Kravspecifikation
Kompilera med /std:c11.
Windows SDK 10.0.20348.0 (version 2104) eller senare. Se Windows SDK för att ladda ned den senaste SDK:en. Instruktioner för att installera och använda SDK för C11- och C17-utveckling finns i Installera C11- och C17-stöd i Visual Studio.