Votre système a probablement les en-têtes C à un endroit dans le système de fichiers, et les en-têtes C++ dans un autre. Êtes-vous familier avec la liste actuelle des répertoires recherchés pour les en-têtes système? (En fait, l'implémentation n'est pas nécessaire pour avoir des fichiers d'en-tête système, bien que tous ceux que je connais le font.La norme C++ a des exigences sur ce que l'instruction #include <cmath>
doit faire, mais pas comment elle doit être faite.)
Dans votre réponse, vous parlez de variations entre C++ sous Linux et Windows. Ce ne sont pas spécifiques au système d'exploitation, mais plutôt spécifiques à la mise en œuvre. Vous utilisez probablement Visual C++ sur Windows et quelque chose d'autre sur Linux (si seulement parce que VC++ fonctionne uniquement sur Windows). Ils peuvent fonctionner différemment dans les configurations par défaut.
En fait, #include <math.h>
devrait être comme #include <cmath>
, sauf que math.h devrait déplacer tous ses noms de fonctions et autres dans l'espace de noms std ::. Si cela ne se produit pas dans votre système Linux C++, il y a un problème. Malheureusement, vous n'avez pas fourni assez d'informations pour comprendre ce qui se passe.
Dans linux, vous trouverez presque toujours à /usr/include/math.h. Êtes-vous sûr que ce n'est pas là? Il est installé dans le cadre des paquets glibc ou glibc-headers dans de nombreuses distributions. – jmanning2k