Karmaşık türler, C99 standardından beri C dilindedir ( -std=c99GCC seçeneği). Bazı derleyiciler daha önceki modlarda bile karmaşık türleri uygulayabilir, ancak bu standart olmayan ve taşınabilir olmayan uzantıdır (örneğin, IBM XL, GCC, intel, ...).
Http://en.wikipedia.org/wiki/Complex.h adresinden başlayabilirsiniz - bu, complex.h dosyasındaki işlevlerin açıklamasını verir.
Bu kılavuz http://pubs.opengroup.org/onlinepubs/009604499/basedefs/complex.h.html ayrıca makrolar hakkında bazı bilgiler verir.
Karmaşık bir değişkeni bildirmek için kullanın
double _Complex a; // use c* functions without suffix
veya
float _Complex b; // use c*f functions - with f suffix
long double _Complex c; // use c*l functions - with l suffix
Karmaşık bir değer vermek için, aşağıdaki _Complex_Imakroyu kullanın complex.h:
float _Complex d = 2.0f + 2.0f*_Complex_I;
(aslında burada (0,-0i)kompleksin tek yarısında sayılar ve NaN'lerle ilgili bazı problemler olabilir )
Modül, cabs(a)/ cabsl(c)/ cabsf(b); Gerçek kısmı creal(a), Hayali olan cimag(a). carg(a)karmaşık argüman içindir.
Gerçek bir görsel parçasına doğrudan erişmek (okumak / yazmak) için bu taşınabilir olmayan GCC uzantısını kullanabilirsiniz :
__real__ a = 1.4;
__imag__ a = 2.0;
float b = __real__ a;