En raison des couches de normes, les fichiers d'inclusion pour C++ sont un nid de rats. J'essayais de comprendre ce que __isnan
appelle réellement, et ne pouvait pas trouver n'importe où avec une définition réelle.Où est le code source d'isnan?
Je viens donc compilé avec S pour voir l'assemblée, et si j'écris:
#include <ieee754.h>
void f(double x) {
if (__isinf(x) ...
if (__isnan(x)) ...
}
Ces deux routines sont appelés. Je voudrais voir la définition actuelle, et éventuellement refactoriser des choses comme celle-ci, car il devrait s'agir juste d'une comparaison de bits, bien que cela soit difficile à réaliser quand la valeur est dans un registre à virgule flottante.
Quoi qu'il en soit, que ce soit ou non une bonne idée, la question est: WHERE est le code source __isnan(x)
?