Türe özel matematik
ISO C Standard 11 (C11) ve üzeri için, <tgmath.h>
ve <complex.h>
eklemeye <math.h>
ek olarak üst bilgi, parametrelerin türlerine göre karşılık gelen matematik işlevini çağıran makrolar sağlar.
C çalışma zamanı kitaplığı matematik işlevleri gerçek ve karmaşık çeşitlemelerle gelir. Bağımsız değişkenin türüne bağlı olarak her değişken üç çeşit halinde gelir: float
, double
ve long double
. C, C++ gibi aşırı yüklemeyi desteklemediğinden, her değişkenin farklı bir adı vardır. Örneğin, gerçek bir kayan nokta değerinin mutlak değerini almak için, sırasıyla bir , fabs
veya long double
fabsl
değeri geçirip float
geçirmediğinize bağlı olarak , double
veya çağırabilirsinizfabsf
. Karmaşık mutlak değeri almak için , veya sırasıyla bir , double
cabs
cabsl
ve long double
karmaşık değeri geçirip float
geçirmediğinize bağlı olarak birini çağırırsınız.cabsf
Bağımsız değişkenler yukarıda belirtilen türlerden herhangi biriyle eşleşmiyorsa, işlev bağımsız değişkenler çiftmiş gibi seçilir.
<tgmath.h>
, çağrılacak doğru matematik işlevinin seçimini basitleştiren makrolar içerir. Makrolar geçirildikleri türü inceler ve doğru işlevi çağırır. Örneğin, sqrt
makro öğesine sqrtf()
bağlanırsqrt(9.9f)
, ancak öğesine sqrt()
bağlanırsqrt(9.9)
. Genel parametre için en az bir makro bağımsız değişkeni karmaşıksa, makro karmaşık bir işleve bağlanır; aksi takdirde, gerçek bir işlev çağırır.
içindeki <tgmath.h>
tür genel makroları, bağımsız değişkenin türüne bağlı olarak farklı işlev adları atamayı veya seçmeyi yönetmenize gerek olmadığından daha fazla taşınabilir kod yazmanıza olanak tanır.
Bu makrolar kendi üst bilgilerindedir, böylece üst bilgi kullanılarak <math.h>
yazılan programlar bozulmaz. Bu nedenle double x = sin(42);
math.h.'>i dahil <ettiğinizde her zaman olduğu gibi davranır. Yine de, veya yerine üst bilgi eklendiğinde <tgmath.h>
mevcut C programlarının <math.h>
<complex.h>
çoğunun etkilenmemesi beklenir.
Aşağıdaki tabloda, içinde <tgmath.h>
kullanılabilen makrolar ve bunların genişletilmesi listelenir. modf
, tür çözümlemesini karmaşık hale getirmeden nasıl güvenli hale getirildiği açık olmadığından ilgili tür genel makrosunda olmadığından bu tabloya dahil değildir.
Gereksinimler
ile derleyin /std:c11
.
Windows SDK 10.0.20348.0 (sürüm 2104) veya üzeri. En son SDK'yı indirmek için bkz. Windows SDK' sı. C11 ve C17 geliştirmesi için SDK'yı yükleme ve kullanma yönergeleri için bkz . Visual Studio'da C11 ve C17 desteğini yükleme.