#define __STDC_WANT_IEC_60559_EXT__ #include <math.h> // <cmath> en C++
int setpayload( double *res, double pl ); // C23 / ISO/IEC 60559
int setpayloadf( float *res, float pl ); // C23 / ISO/IEC 60559
int setpayloadl( long double *res, long double pl ); // C23 / ISO/IEC 60559
Ces trois fonctions créent un NaN silencieux avec le payload demandé et le stockent dans l'objet pointé par res.
Ces fonctions renvoient zéro si le NaN demandé a été stocké, et une valeur non nulle sinon.
L'exemple suivant montre une utilisation simple de ces fonctions.
1 2 3 4 5 6 7 8 9 10 11 |
#define __STDC_WANT_IEC_60559_EXT__ #include <math.h> #include <stdio.h> #include <stdlib.h> int main() { double value = 0.0; printf( "setpayload(&value, 1.0) == %d ", setpayload(&value, 1.0) ); return EXIT_SUCCESS; } |
Il est à noter que la librairie mathématique doit être ajoutée durant l'étape de "link" (édition des liens)
de votre exécutable. Cela se réalise en ajoutant l'option -lm à votre compilateur GCC.
$> gcc -o sample sample.c -lm $> ./sample setpayload(&value, 1.0) == 0 $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :